From 5f491254418804e043c525405323774ce0abc3c9 Mon Sep 17 00:00:00 2001 From: frost ostrich Date: Mon, 5 Feb 2024 16:50:17 +1000 Subject: [PATCH 01/35] feat: block users when ip-country check fails --- apps/dapp/src/hooks/use-geo-blocked.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dapp/src/hooks/use-geo-blocked.tsx b/apps/dapp/src/hooks/use-geo-blocked.tsx index cc8bac028..f837da78d 100644 --- a/apps/dapp/src/hooks/use-geo-blocked.tsx +++ b/apps/dapp/src/hooks/use-geo-blocked.tsx @@ -11,7 +11,7 @@ export const useGeoBlocked = () => { .then((res) => res.blocked) .catch((err: unknown) => { console.log('geoblock error:', err); - return false; + return true; }); setIsBlocked(blocked); setLoading(false); From 255b573853106b3f69041a76ea7515dd91b170b6 Mon Sep 17 00:00:00 2001 From: frost ostrich Date: Mon, 5 Feb 2024 17:03:37 +1000 Subject: [PATCH 02/35] feat: avoid geo-blocking users on development --- apps/dapp/src/hooks/use-geo-blocked.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/dapp/src/hooks/use-geo-blocked.tsx b/apps/dapp/src/hooks/use-geo-blocked.tsx index f837da78d..1886a96c4 100644 --- a/apps/dapp/src/hooks/use-geo-blocked.tsx +++ b/apps/dapp/src/hooks/use-geo-blocked.tsx @@ -3,6 +3,7 @@ import { useEffect, useState } from 'react'; export const useGeoBlocked = () => { const [isBlocked, setIsBlocked] = useState(false); const [loading, setLoading] = useState(true); + const IS_DEVELOPMENT = import.meta.env.MODE == 'development'; useEffect(() => { const checkBlocked = async () => { @@ -11,6 +12,7 @@ export const useGeoBlocked = () => { .then((res) => res.blocked) .catch((err: unknown) => { console.log('geoblock error:', err); + if (IS_DEVELOPMENT) return false; // don't block users on dev return true; }); setIsBlocked(blocked); From 146b92959924f20e8ff05959c8f613732f199b7f Mon Sep 17 00:00:00 2001 From: Marshall <99344331+marshall2112@users.noreply.github.com> Date: Fri, 29 Mar 2024 07:56:16 -0400 Subject: [PATCH 03/35] stage->main (#1000) * Refactor dashboard configuration to one place * Uncomment TLC * upgrade oz to 5.0.2 * remove comments, format slither * format slither * update forge tests * update slither * gas update * tests update, forceApprove, slither run * remove zap contracts/tests * feat: use update virtual function properly * forceApprove update * chore: make abi static * fix: unstaking OGT is always 100 (#998) Co-authored-by: Marshall <99344331+marshall2112@users.noreply.github.com> --------- Co-authored-by: princetonbishop Co-authored-by: princetonbishop <92975084+princetonbishop@users.noreply.github.com> Co-authored-by: frontier159 <103474701+frontier159@users.noreply.github.com> Co-authored-by: Pocin <8642344+pocin@users.noreply.github.com> --- .../token/ERC20/ERC20.sol/ERC20.json | 297 + .../TempleTeamPayments.json | 291 + .../TempleTeamPaymentsFactory.json | 343 + .../TempleTeamPaymentsV2.json | 354 + .../ITempleTWAP.json | 31 + .../ITreasuryIV.json | 29 + .../TempleStableAMMRouter.json | 506 + .../TempleUniswapV2Pair.json | 748 + .../amm/TreasuryIV.sol/TreasuryIV.json | 115 + .../amo/AuraStaking.sol/AuraStaking.json | 697 + .../abi/contracts/amo/Ramos.sol/Ramos.json | 1462 + .../RamosTestnetAuraStaking.json | 692 + .../RamosTestnetTempleTokenVault.json | 115 + .../AMO_IAuraStakingProxy.json | 44 + .../IAuraToken.sol/AMO_IAuraToken.json | 29 + .../AMO__IBalancerAuthorizer.json | 130 + .../AMO__IBalancerAuthorizerAdapter.json | 80 + .../IBalancerHelpers.json | 133 + .../AMO__IBalancerVotingEscrow.json | 29 + .../IGaugeAdder.sol/AMO__IGaugeAdder.json | 24 + .../AMO__IAuraGaugeController.json | 105 + .../AMO__ILiquidityGaugeFactory.json | 35 + .../AMO__IPoolManagerProxy.json | 40 + .../AMO__IPoolManagerV3.json | 54 + .../AMO__IAuraStashRewards.json | 83 + .../IWeightPool2Tokens.json | 24 + .../AMO__Goerli_ILiquidityGaugeFactory.json | 49 + .../amo/helpers/AMOCommon.sol/AMOCommon.json | 115 + .../BalancerPoolHelper.json | 779 + .../IWeightPool2Tokens.json | 24 + .../CommonEventsAndErrors.json | 109 + .../common/SafeCast.sol/SafeCast.json | 22 + .../contracts/core/Exposure.sol/Exposure.json | 701 + .../core/Exposure.sol/ILiquidator.json | 29 + .../core/JoiningFee.sol/JoiningFee.json | 172 + .../core/OpsManager.sol/OpsManager.json | 506 + .../core/OpsManagerLib.sol/OpsManagerLib.json | 35 + .../contracts/core/OtcOffer.sol/OtcOffer.json | 465 + .../core/RebasingERC20.sol/RebasingERC20.json | 369 + .../TempleERC20Token.json | 630 + .../TreasuryFarmingRevenue.json | 289 + .../abi/contracts/core/Vault.sol/Vault.json | 936 + .../core/VaultEarlyWithdraw.sol/IVault.json | 30 + .../VaultEarlyWithdraw.json | 320 + .../core/VaultProxy.sol/VaultProxy.json | 290 + .../core/VaultedTemple.sol/VaultedTemple.json | 146 + .../contracts/deprecated/Faith.sol/Faith.json | 205 + .../deprecated/IExitQueue.sol/IExitQueue.json | 29 + .../InstantExitQueue.json | 45 + .../LockedOGTemple.sol/LockedOGTemple.json | 199 + .../deprecated/OGTemple.sol/OGTemple.json | 387 + .../TempleStaking.sol/TempleStaking.json | 419 + .../ElderElection.sol/ElderElection.json | 509 + .../governance/Templar.sol/Templar.json | 668 + .../TemplarMetadata.sol/TemplarMetadata.json | 308 + .../amo/IAuraStaking.sol/IAuraStaking.json | 384 + .../interfaces/amo/IRamos.sol/IRamos.json | 887 + .../IBalancerPoolHelper.json | 713 + .../IRamosTokenVault.json | 73 + .../ITempleERC20Token.json | 243 + .../IAuraBaseRewardPool.json | 223 + .../aura/IAuraBooster.sol/IAuraBooster.json | 253 + .../IBalancerBptToken.json | 207 + .../IBalancerHelpers.json | 133 + .../IBalancerVault.sol/IBalancerVault.json | 233 + .../IMakerDaoDaiJoinLike.json | 73 + .../IMakerDaoPotLike.json | 108 + .../IMakerDaoVatLike.json | 43 + .../ITempleDebtToken.json | 1062 + .../ITreasuryPriceIndexOracle.json | 455 + .../ITreasuryReservesVault.json | 1413 + .../ITempleElevatedAccess.json | 283 + .../ITempleCircuitBreaker.json | 301 + .../ITempleCircuitBreakerProxy.json | 453 + .../IInterestRateModel.json | 30 + .../IThresholdSafeGuard.json | 278 + .../ITempleBaseStrategy.json | 81 + .../ITempleStrategy.sol/ITempleStrategy.json | 665 + .../ITlcStrategy.sol/ITlcStrategy.json | 683 + .../ITempleLineOfCredit.json | 828 + .../ITlcDataTypes.sol/ITlcDataTypes.json | 10 + .../ITlcEventsAndErrors.json | 297 + .../util/ABDKMath64x64.sol/ABDKMath64x64.json | 10 + .../util/ABDKMathQuad.sol/ABDKMathQuad.json | 10 + .../TempleDebtToken.sol/TempleDebtToken.json | 1201 + .../TreasuryPriceIndexOracle.json | 496 + .../TreasuryReservesVault.json | 1498 + .../TempleElevatedAccess.json | 293 + ...TempleCircuitBreakerAllUsersPerPeriod.json | 552 + .../TempleCircuitBreakerProxy.json | 484 + .../BaseInterestRateModel.json | 30 + .../CompoundedInterest.json | 24 + .../LinearWithKinkInterestRateModel.json | 440 + .../safeGuards/SafeForked.sol/SafeForked.json | 10 + .../ThresholdSafeGuard.json | 793 + .../AbstractStrategy.json | 675 + .../DsrBaseStrategy.sol/DsrBaseStrategy.json | 904 + .../GnosisStrategy.sol/GnosisStrategy.json | 930 + .../RamosStrategy.sol/RamosStrategy.json | 1125 + .../TempleTokenBaseStrategy.json | 800 + .../TlcStrategy.sol/TlcStrategy.json | 779 + .../TempleLineOfCredit.json | 1309 + apps/dapp/package.json | 5 +- .../Chart/V2StrategyMetricsChart.tsx | 41 +- .../Core/DappPages/Dashboard/Chart/index.tsx | 12 +- .../DappPages/Dashboard/DashboardConfig.tsx | 97 + .../DappPages/Dashboard/DashboardContent.tsx | 96 +- .../DappPages/Dashboard/Metrics/index.tsx | 8 +- .../Dashboard/Table/TxnDataTable.tsx | 2 +- .../Dashboard/Table/TxnHistoryTable.tsx | 44 +- .../Core/DappPages/Dashboard/Table/index.tsx | 9 +- .../hooks/use-dashboardv2-daily-snapshots.ts | 3 +- .../hooks/use-dashboardv2-metrics.ts | 115 +- .../hooks/use-dashboardv2-txHistory.ts | 61 +- .../Pages/Core/DappPages/Dashboard/index.tsx | 48 +- .../Core/DappPages/Legacy/UnstakeOGT.tsx | 2 - apps/dapp/src/utils/react-query-helpers.ts | 11 +- .../contracts/admin/TempleTeamPayments.sol | 2 +- .../admin/TempleTeamPaymentsFactory.sol | 2 +- .../contracts/admin/TempleTeamPaymentsV2.sol | 2 +- .../contracts/amm/TempleStableAMMRouter.sol | 2 +- protocol/contracts/amm/TreasuryIV.sol | 2 +- protocol/contracts/amo/Ramos.sol | 14 +- protocol/contracts/core/Exposure.sol | 2 +- protocol/contracts/core/JoiningFee.sol | 2 +- protocol/contracts/core/MultiOtcOffer.sol | 2 +- protocol/contracts/core/OpsManager.sol | 2 +- protocol/contracts/core/OtcOffer.sol | 4 +- protocol/contracts/core/RebasingERC20.sol | 101 +- protocol/contracts/core/TempleERC20Token.sol | 6 +- .../contracts/core/TreasuryFarmingRevenue.sol | 2 +- protocol/contracts/core/Vault.sol | 30 +- .../contracts/core/VaultEarlyWithdraw.sol | 4 +- protocol/contracts/core/VaultProxy.sol | 2 +- protocol/contracts/core/VaultedTemple.sol | 2 +- protocol/contracts/deprecated/Faith.sol | 2 +- protocol/contracts/deprecated/OGTemple.sol | 4 +- .../contracts/deprecated/TempleStaking.sol | 2 +- .../contracts/governance/ElderElection.sol | 19 +- protocol/contracts/governance/Templar.sol | 6 +- .../v2/strategies/AbstractStrategy.sol | 5 +- .../v2/strategies/DsrBaseStrategy.sol | 2 +- .../templeLineOfCredit/TempleLineOfCredit.sol | 5 +- protocol/contracts/zaps/GenericZap.sol | 684 - protocol/contracts/zaps/TempleZaps.sol | 430 - protocol/contracts/zaps/ZapBase.sol | 104 - .../zaps/interfaces/IBalancerVault.sol | 70 - .../zaps/interfaces/ICurveFactory.sol | 7 - .../contracts/zaps/interfaces/ICurvePool.sol | 15 - .../zaps/interfaces/IGenericZaps.sol | 14 - .../zaps/interfaces/ITempleStableRouter.sol | 32 - .../zaps/interfaces/IUniswapV2Factory.sol | 6 - .../zaps/interfaces/IUniswapV2Pair.sol | 9 - .../zaps/interfaces/IUniswapV2Router.sol | 25 - protocol/contracts/zaps/interfaces/IVault.sol | 6 - protocol/contracts/zaps/interfaces/IWeth.sol | 6 - protocol/contracts/zaps/libs/EthConstants.sol | 6 - protocol/contracts/zaps/libs/Executable.sol | 34 - protocol/contracts/zaps/libs/Swap.sol | 111 - protocol/contracts/zaps/readme.md | 127 - protocol/package.json | 4 +- protocol/slither.db.json | 344057 +++++++++++++-- protocol/test/amm_test.ts | 24 +- protocol/test/amo/ramos.ts | 10 +- protocol/test/core/exposure-tests.ts | 8 +- protocol/test/core/farming-revenue-tests.ts | 6 +- protocol/test/core/ops-manager-tests.ts | 15 +- .../test/core/rebasing-erc20-testsuite.ts | 4 +- .../test/core/vault-early-withdraw-tests.ts | 22 +- protocol/test/core/vault-proxy-tests.ts | 24 +- protocol/test/core/vault-tests.ts | 8 +- protocol/test/elder-election-tests.ts | 7 +- protocol/test/forge/TempleTest.sol | 4 +- .../admin/TempleTeamPaymentsFactory.t.sol | 4 +- protocol/test/forge/core/MultiOtcOffer.t.sol | 4 +- protocol/test/forge/core/OtcOffer.t.sol | 3 +- .../forge/v2/strategies/GnosisStrategy.t.sol | 3 +- .../strategies/TempleTokenBaseStrategy.t.sol | 3 +- .../v2/templeLineOfCredit/TlcBorrow.t.sol | 10 +- .../v2/templeLineOfCredit/TlcCollateral.t.sol | 6 +- .../v2/treasuryReservesVault/TrvRepay.t.sol | 3 +- protocol/test/templar-metadata-tests.ts | 4 +- protocol/test/templar-nft-tests.ts | 22 +- protocol/test/temple-team-payments-tests.ts | 12 +- protocol/test/temple-token-tests.ts | 6 +- protocol/test/temple-zaps.ts | 2033 - 186 files changed, 339693 insertions(+), 47131 deletions(-) create mode 100644 apps/dapp/abi/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json create mode 100644 apps/dapp/abi/contracts/admin/TempleTeamPayments.sol/TempleTeamPayments.json create mode 100644 apps/dapp/abi/contracts/admin/TempleTeamPaymentsFactory.sol/TempleTeamPaymentsFactory.json create mode 100644 apps/dapp/abi/contracts/admin/TempleTeamPaymentsV2.sol/TempleTeamPaymentsV2.json create mode 100644 apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/ITempleTWAP.json create mode 100644 apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/ITreasuryIV.json create mode 100644 apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/TempleStableAMMRouter.json create mode 100644 apps/dapp/abi/contracts/amm/TempleUniswapV2Pair.sol/TempleUniswapV2Pair.json create mode 100644 apps/dapp/abi/contracts/amm/TreasuryIV.sol/TreasuryIV.json create mode 100644 apps/dapp/abi/contracts/amo/AuraStaking.sol/AuraStaking.json create mode 100644 apps/dapp/abi/contracts/amo/Ramos.sol/Ramos.json create mode 100644 apps/dapp/abi/contracts/amo/RamosTestnetAuraStaking.sol/RamosTestnetAuraStaking.json create mode 100644 apps/dapp/abi/contracts/amo/RamosTestnetTempleTokenVault.sol/RamosTestnetTempleTokenVault.json create mode 100644 apps/dapp/abi/contracts/amo/external/IAuraStakingProxy.sol/AMO_IAuraStakingProxy.json create mode 100644 apps/dapp/abi/contracts/amo/external/IAuraToken.sol/AMO_IAuraToken.json create mode 100644 apps/dapp/abi/contracts/amo/external/IBalancerAuthorizer.sol/AMO__IBalancerAuthorizer.json create mode 100644 apps/dapp/abi/contracts/amo/external/IBalancerAuthorizerAdapter.sol/AMO__IBalancerAuthorizerAdapter.json create mode 100644 apps/dapp/abi/contracts/amo/external/IBalancerHelpers.sol/IBalancerHelpers.json create mode 100644 apps/dapp/abi/contracts/amo/external/IBalancerVotingEscrow.sol/AMO__IBalancerVotingEscrow.json create mode 100644 apps/dapp/abi/contracts/amo/external/IGaugeAdder.sol/AMO__IGaugeAdder.json create mode 100644 apps/dapp/abi/contracts/amo/external/IGaugeController.sol/AMO__IAuraGaugeController.json create mode 100644 apps/dapp/abi/contracts/amo/external/ILiquidityGaugeFactory.sol/AMO__ILiquidityGaugeFactory.json create mode 100644 apps/dapp/abi/contracts/amo/external/IPoolManagerProxy.sol/AMO__IPoolManagerProxy.json create mode 100644 apps/dapp/abi/contracts/amo/external/IPoolManagerV3.sol/AMO__IPoolManagerV3.json create mode 100644 apps/dapp/abi/contracts/amo/external/IStashRewards.sol/AMO__IAuraStashRewards.json create mode 100644 apps/dapp/abi/contracts/amo/external/IWeightPool2Tokens.sol/IWeightPool2Tokens.json create mode 100644 apps/dapp/abi/contracts/amo/external/goerli/Goerli_ILiquidityGaugeFactory.sol/AMO__Goerli_ILiquidityGaugeFactory.json create mode 100644 apps/dapp/abi/contracts/amo/helpers/AMOCommon.sol/AMOCommon.json create mode 100644 apps/dapp/abi/contracts/amo/helpers/BalancerPoolHelper.sol/BalancerPoolHelper.json create mode 100644 apps/dapp/abi/contracts/amo/helpers/BalancerPoolHelper.sol/IWeightPool2Tokens.json create mode 100644 apps/dapp/abi/contracts/common/CommonEventsAndErrors.sol/CommonEventsAndErrors.json create mode 100644 apps/dapp/abi/contracts/common/SafeCast.sol/SafeCast.json create mode 100644 apps/dapp/abi/contracts/core/Exposure.sol/Exposure.json create mode 100644 apps/dapp/abi/contracts/core/Exposure.sol/ILiquidator.json create mode 100644 apps/dapp/abi/contracts/core/JoiningFee.sol/JoiningFee.json create mode 100644 apps/dapp/abi/contracts/core/OpsManager.sol/OpsManager.json create mode 100644 apps/dapp/abi/contracts/core/OpsManagerLib.sol/OpsManagerLib.json create mode 100644 apps/dapp/abi/contracts/core/OtcOffer.sol/OtcOffer.json create mode 100644 apps/dapp/abi/contracts/core/RebasingERC20.sol/RebasingERC20.json create mode 100644 apps/dapp/abi/contracts/core/TempleERC20Token.sol/TempleERC20Token.json create mode 100644 apps/dapp/abi/contracts/core/TreasuryFarmingRevenue.sol/TreasuryFarmingRevenue.json create mode 100644 apps/dapp/abi/contracts/core/Vault.sol/Vault.json create mode 100644 apps/dapp/abi/contracts/core/VaultEarlyWithdraw.sol/IVault.json create mode 100644 apps/dapp/abi/contracts/core/VaultEarlyWithdraw.sol/VaultEarlyWithdraw.json create mode 100644 apps/dapp/abi/contracts/core/VaultProxy.sol/VaultProxy.json create mode 100644 apps/dapp/abi/contracts/core/VaultedTemple.sol/VaultedTemple.json create mode 100644 apps/dapp/abi/contracts/deprecated/Faith.sol/Faith.json create mode 100644 apps/dapp/abi/contracts/deprecated/IExitQueue.sol/IExitQueue.json create mode 100644 apps/dapp/abi/contracts/deprecated/InstantExitQueue.sol/InstantExitQueue.json create mode 100644 apps/dapp/abi/contracts/deprecated/LockedOGTemple.sol/LockedOGTemple.json create mode 100644 apps/dapp/abi/contracts/deprecated/OGTemple.sol/OGTemple.json create mode 100644 apps/dapp/abi/contracts/deprecated/TempleStaking.sol/TempleStaking.json create mode 100644 apps/dapp/abi/contracts/governance/ElderElection.sol/ElderElection.json create mode 100644 apps/dapp/abi/contracts/governance/Templar.sol/Templar.json create mode 100644 apps/dapp/abi/contracts/governance/TemplarMetadata.sol/TemplarMetadata.json create mode 100644 apps/dapp/abi/contracts/interfaces/amo/IAuraStaking.sol/IAuraStaking.json create mode 100644 apps/dapp/abi/contracts/interfaces/amo/IRamos.sol/IRamos.json create mode 100644 apps/dapp/abi/contracts/interfaces/amo/helpers/IBalancerPoolHelper.sol/IBalancerPoolHelper.json create mode 100644 apps/dapp/abi/contracts/interfaces/amo/helpers/IRamosTokenVault.sol/IRamosTokenVault.json create mode 100644 apps/dapp/abi/contracts/interfaces/core/ITempleERC20Token.sol/ITempleERC20Token.json create mode 100644 apps/dapp/abi/contracts/interfaces/external/aura/IAuraBaseRewardPool.sol/IAuraBaseRewardPool.json create mode 100644 apps/dapp/abi/contracts/interfaces/external/aura/IAuraBooster.sol/IAuraBooster.json create mode 100644 apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerBptToken.sol/IBalancerBptToken.json create mode 100644 apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerHelpers.sol/IBalancerHelpers.json create mode 100644 apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerVault.sol/IBalancerVault.json create mode 100644 apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoDaiJoinLike.sol/IMakerDaoDaiJoinLike.json create mode 100644 apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoPotLike.sol/IMakerDaoPotLike.json create mode 100644 apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoVatLike.sol/IMakerDaoVatLike.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/ITempleDebtToken.sol/ITempleDebtToken.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/ITreasuryPriceIndexOracle.sol/ITreasuryPriceIndexOracle.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/ITreasuryReservesVault.sol/ITreasuryReservesVault.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/access/ITempleElevatedAccess.sol/ITempleElevatedAccess.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreaker.sol/ITempleCircuitBreaker.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreakerProxy.sol/ITempleCircuitBreakerProxy.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/interestRate/IInterestRateModel.sol/IInterestRateModel.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol/IThresholdSafeGuard.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/strategies/ITempleBaseStrategy.sol/ITempleBaseStrategy.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/strategies/ITempleStrategy.sol/ITempleStrategy.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/strategies/ITlcStrategy.sol/ITlcStrategy.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITempleLineOfCredit.sol/ITempleLineOfCredit.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITlcDataTypes.sol/ITlcDataTypes.json create mode 100644 apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITlcEventsAndErrors.sol/ITlcEventsAndErrors.json create mode 100644 apps/dapp/abi/contracts/util/ABDKMath64x64.sol/ABDKMath64x64.json create mode 100644 apps/dapp/abi/contracts/util/ABDKMathQuad.sol/ABDKMathQuad.json create mode 100644 apps/dapp/abi/contracts/v2/TempleDebtToken.sol/TempleDebtToken.json create mode 100644 apps/dapp/abi/contracts/v2/TreasuryPriceIndexOracle.sol/TreasuryPriceIndexOracle.json create mode 100644 apps/dapp/abi/contracts/v2/TreasuryReservesVault.sol/TreasuryReservesVault.json create mode 100644 apps/dapp/abi/contracts/v2/access/TempleElevatedAccess.sol/TempleElevatedAccess.json create mode 100644 apps/dapp/abi/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol/TempleCircuitBreakerAllUsersPerPeriod.json create mode 100644 apps/dapp/abi/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol/TempleCircuitBreakerProxy.json create mode 100644 apps/dapp/abi/contracts/v2/interestRate/BaseInterestRateModel.sol/BaseInterestRateModel.json create mode 100644 apps/dapp/abi/contracts/v2/interestRate/CompoundedInterest.sol/CompoundedInterest.json create mode 100644 apps/dapp/abi/contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol/LinearWithKinkInterestRateModel.json create mode 100644 apps/dapp/abi/contracts/v2/safeGuards/SafeForked.sol/SafeForked.json create mode 100644 apps/dapp/abi/contracts/v2/safeGuards/ThresholdSafeGuard.sol/ThresholdSafeGuard.json create mode 100644 apps/dapp/abi/contracts/v2/strategies/AbstractStrategy.sol/AbstractStrategy.json create mode 100644 apps/dapp/abi/contracts/v2/strategies/DsrBaseStrategy.sol/DsrBaseStrategy.json create mode 100644 apps/dapp/abi/contracts/v2/strategies/GnosisStrategy.sol/GnosisStrategy.json create mode 100644 apps/dapp/abi/contracts/v2/strategies/RamosStrategy.sol/RamosStrategy.json create mode 100644 apps/dapp/abi/contracts/v2/strategies/TempleTokenBaseStrategy.sol/TempleTokenBaseStrategy.json create mode 100644 apps/dapp/abi/contracts/v2/strategies/TlcStrategy.sol/TlcStrategy.json create mode 100644 apps/dapp/abi/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol/TempleLineOfCredit.json create mode 100644 apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardConfig.tsx delete mode 100644 protocol/contracts/zaps/GenericZap.sol delete mode 100644 protocol/contracts/zaps/TempleZaps.sol delete mode 100644 protocol/contracts/zaps/ZapBase.sol delete mode 100644 protocol/contracts/zaps/interfaces/IBalancerVault.sol delete mode 100644 protocol/contracts/zaps/interfaces/ICurveFactory.sol delete mode 100644 protocol/contracts/zaps/interfaces/ICurvePool.sol delete mode 100644 protocol/contracts/zaps/interfaces/IGenericZaps.sol delete mode 100644 protocol/contracts/zaps/interfaces/ITempleStableRouter.sol delete mode 100644 protocol/contracts/zaps/interfaces/IUniswapV2Factory.sol delete mode 100644 protocol/contracts/zaps/interfaces/IUniswapV2Pair.sol delete mode 100644 protocol/contracts/zaps/interfaces/IUniswapV2Router.sol delete mode 100644 protocol/contracts/zaps/interfaces/IVault.sol delete mode 100644 protocol/contracts/zaps/interfaces/IWeth.sol delete mode 100644 protocol/contracts/zaps/libs/EthConstants.sol delete mode 100644 protocol/contracts/zaps/libs/Executable.sol delete mode 100644 protocol/contracts/zaps/libs/Swap.sol delete mode 100644 protocol/contracts/zaps/readme.md delete mode 100644 protocol/test/temple-zaps.ts diff --git a/apps/dapp/abi/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json b/apps/dapp/abi/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json new file mode 100644 index 000000000..60f965be9 --- /dev/null +++ b/apps/dapp/abi/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json @@ -0,0 +1,297 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000e0f38038062000e0f83398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1b80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212200710ed26c9983bba7cad2829fca0277d8f50a4559b65597dfdadda71d25c864b64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212200710ed26c9983bba7cad2829fca0277d8f50a4559b65597dfdadda71d25c864b64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/admin/TempleTeamPayments.sol/TempleTeamPayments.json b/apps/dapp/abi/contracts/admin/TempleTeamPayments.sol/TempleTeamPayments.json new file mode 100644 index 000000000..1e3425db7 --- /dev/null +++ b/apps/dapp/abi/contracts/admin/TempleTeamPayments.sol/TempleTeamPayments.json @@ -0,0 +1,291 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleTeamPayments", + "sourceName": "contracts/admin/TempleTeamPayments.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_TEMPLE", + "type": "address" + }, + { + "internalType": "uint256", + "name": "paymentPeriodInSeconds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startTimestamp", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Claimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "TEMPLE", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "adhocPayment", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allocation", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "calculateClaimable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "pauseMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "roundEndDate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "roundStartDate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setAllocation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_amounts", + "type": "uint256[]" + } + ], + "name": "setAllocations", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawTempleBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60e06040523480156200001157600080fd5b50604051620017a5380380620017a58339810160408190526200003491620000b7565b6200003f3362000067565b6080819052620000508282620000fc565b60a05250506001600160a01b031660c05262000124565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600060608486031215620000cd57600080fd5b83516001600160a01b0381168114620000e557600080fd5b602085015160409095015190969495509392505050565b808201808211156200011e57634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a05160c0516116286200017d60003960008181610156015281816106320152818161081701526109190152600081816102670152610c2c01526000818160ff01528181610c0b0152610c5501526116286000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063adfc500b11610097578063d4cc2dd311610066578063d4cc2dd31461023c578063f2fde38b1461024f578063f73fae7114610262578063fe7b00071461028957600080fd5b8063adfc500b146101d6578063b81b8630146101e9578063c884ef8314610209578063cffc8e641461022957600080fd5b806350e23d00116100d357806350e23d0014610151578063715018a61461019d5780638da5cb5b146101a55780639076c166146101c357600080fd5b8063078fa339146100fa5780631ff64acd146101345780634e71d92d14610149575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610147610142366004611326565b61029c565b005b6101476104d0565b6101787f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012b565b610147610692565b60005473ffffffffffffffffffffffffffffffffffffffff16610178565b6101476101d13660046113e6565b6106a6565b6101476101e43660046113e6565b61077a565b6101216101f7366004611410565b60016020526000908152604090205481565b610121610217366004611410565b60026020526000908152604090205481565b6101476102373660046113e6565b610841565b61014761024a366004611410565b610987565b61014761025d366004611410565b610a76565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b610121610297366004611410565b610b2d565b6102a4610d4a565b8051825114610360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f54656d706c655465616d5061796d656e74733a2061646472657373657320616e60448201527f6420616d6f756e7473206d757374206265207468652073616d65206c656e677460648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000805b83518110156104ca578173ffffffffffffffffffffffffffffffffffffffff168482815181106103965761039661142b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f54656d706c655465616d5061796d656e74733a20416464726573732063616e6e60448201527f6f742062652030783000000000000000000000000000000000000000000000006064820152608401610357565b8281815181106104535761045361142b565b6020026020010151600160008684815181106104715761047161142b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806104c290611489565b915050610364565b50505050565b3360008181526001602052604090205461056b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655465616d5061796d656e74733a204d656d626572206e6f74206660448201527f6f756e64000000000000000000000000000000000000000000000000000000006064820152608401610357565b600061057633610b2d565b905060008111610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c655465616d5061796d656e74733a204d656d62657220686173206e60448201527f6f2054454d504c4520746f20636c61696d0000000000000000000000000000006064820152608401610357565b33600090815260026020526040812080548392906106279084906114c1565b9091555061065890507f00000000000000000000000000000000000000000000000000000000000000003383610dcb565b60405181815233907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a906020015b60405180910390a25050565b61069a610d4a565b6106a46000610e5d565b565b6106ae610d4a565b73ffffffffffffffffffffffffffffffffffffffff8216610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f54656d706c655465616d5061796d656e74733a20416464726573732063616e6e60448201527f6f742062652030783000000000000000000000000000000000000000000000006064820152608401610357565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b610782610d4a565b60008111610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c655465616d5061796d656e74733a20416d6f756e74206d7573742060448201527f62652067726561746572207468616e20300000000000000000000000000000006064820152608401610357565b61083d7f00000000000000000000000000000000000000000000000000000000000000008383610dcb565b5050565b610849610d4a565b600081116108d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c655465616d5061796d656e74733a20416d6f756e74206d7573742060448201527f62652067726561746572207468616e20300000000000000000000000000000006064820152608401610357565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260408120805483929061090e9084906114c1565b9091555061093f90507f00000000000000000000000000000000000000000000000000000000000000008383610dcb565b8173ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a8260405161068691815260200190565b61098f610d4a565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260409020548190610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655465616d5061796d656e74733a204d656d626572206e6f74206660448201527f6f756e64000000000000000000000000000000000000000000000000000000006064820152608401610357565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020908152604080832054600190925290912055565b610a7e610d4a565b73ffffffffffffffffffffffffffffffffffffffff8116610b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610357565b610b2a81610e5d565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260408120548290610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655465616d5061796d656e74733a204d656d626572206e6f74206660448201527f6f756e64000000000000000000000000000000000000000000000000000000006064820152608401610357565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040812054610c507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006114da565b610c7a7f0000000000000000000000000000000000000000000000000000000000000000426114da565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260016020526040902054610caa91906114ed565b610cb49190611504565b610cbe91906114da565b73ffffffffffffffffffffffffffffffffffffffff851660009081526001602090815260408083205460029092529091205491925090610cfe90836114c1565b1115610d435773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832054600190925290912054610d4091906114da565b90505b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610357565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610e58908490610ed2565b505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610f34826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610fe19092919063ffffffff16565b9050805160001480610f55575080806020019051810190610f55919061153f565b610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610357565b6060610ff08484600085610ff8565b949350505050565b60608247101561108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610357565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516110b39190611585565b60006040518083038185875af1925050503d80600081146110f0576040519150601f19603f3d011682016040523d82523d6000602084013e6110f5565b606091505b509150915061110687838387611111565b979650505050505050565b606083156111a75782516000036111a05773ffffffffffffffffffffffffffffffffffffffff85163b6111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610357565b5081610ff0565b610ff083838151156111bc5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035791906115a1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611266576112666111f0565b604052919050565b600067ffffffffffffffff821115611288576112886111f0565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146112b657600080fd5b919050565b600082601f8301126112cc57600080fd5b813560206112e16112dc8361126e565b61121f565b82815260059290921b8401810191818101908684111561130057600080fd5b8286015b8481101561131b5780358352918301918301611304565b509695505050505050565b6000806040838503121561133957600080fd5b823567ffffffffffffffff8082111561135157600080fd5b818501915085601f83011261136557600080fd5b813560206113756112dc8361126e565b82815260059290921b8401810191818101908984111561139457600080fd5b948201945b838610156113b9576113aa86611292565b82529482019490820190611399565b965050860135925050808211156113cf57600080fd5b506113dc858286016112bb565b9150509250929050565b600080604083850312156113f957600080fd5b61140283611292565b946020939093013593505050565b60006020828403121561142257600080fd5b610d4382611292565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114ba576114ba61145a565b5060010190565b808201808211156114d4576114d461145a565b92915050565b818103818111156114d4576114d461145a565b80820281158282048414176114d4576114d461145a565b60008261153a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561155157600080fd5b81518015158114610d4357600080fd5b60005b8381101561157c578181015183820152602001611564565b50506000910152565b60008251611597818460208701611561565b9190910192915050565b60208152600082518060208401526115c0816040850160208701611561565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122032285919a4842dff17427470c6acba907e45e2d300125a483b023ff04eb01d5564736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063adfc500b11610097578063d4cc2dd311610066578063d4cc2dd31461023c578063f2fde38b1461024f578063f73fae7114610262578063fe7b00071461028957600080fd5b8063adfc500b146101d6578063b81b8630146101e9578063c884ef8314610209578063cffc8e641461022957600080fd5b806350e23d00116100d357806350e23d0014610151578063715018a61461019d5780638da5cb5b146101a55780639076c166146101c357600080fd5b8063078fa339146100fa5780631ff64acd146101345780634e71d92d14610149575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b610147610142366004611326565b61029c565b005b6101476104d0565b6101787f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012b565b610147610692565b60005473ffffffffffffffffffffffffffffffffffffffff16610178565b6101476101d13660046113e6565b6106a6565b6101476101e43660046113e6565b61077a565b6101216101f7366004611410565b60016020526000908152604090205481565b610121610217366004611410565b60026020526000908152604090205481565b6101476102373660046113e6565b610841565b61014761024a366004611410565b610987565b61014761025d366004611410565b610a76565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b610121610297366004611410565b610b2d565b6102a4610d4a565b8051825114610360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f54656d706c655465616d5061796d656e74733a2061646472657373657320616e60448201527f6420616d6f756e7473206d757374206265207468652073616d65206c656e677460648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000805b83518110156104ca578173ffffffffffffffffffffffffffffffffffffffff168482815181106103965761039661142b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f54656d706c655465616d5061796d656e74733a20416464726573732063616e6e60448201527f6f742062652030783000000000000000000000000000000000000000000000006064820152608401610357565b8281815181106104535761045361142b565b6020026020010151600160008684815181106104715761047161142b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806104c290611489565b915050610364565b50505050565b3360008181526001602052604090205461056b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655465616d5061796d656e74733a204d656d626572206e6f74206660448201527f6f756e64000000000000000000000000000000000000000000000000000000006064820152608401610357565b600061057633610b2d565b905060008111610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c655465616d5061796d656e74733a204d656d62657220686173206e60448201527f6f2054454d504c4520746f20636c61696d0000000000000000000000000000006064820152608401610357565b33600090815260026020526040812080548392906106279084906114c1565b9091555061065890507f00000000000000000000000000000000000000000000000000000000000000003383610dcb565b60405181815233907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a906020015b60405180910390a25050565b61069a610d4a565b6106a46000610e5d565b565b6106ae610d4a565b73ffffffffffffffffffffffffffffffffffffffff8216610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f54656d706c655465616d5061796d656e74733a20416464726573732063616e6e60448201527f6f742062652030783000000000000000000000000000000000000000000000006064820152608401610357565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b610782610d4a565b60008111610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c655465616d5061796d656e74733a20416d6f756e74206d7573742060448201527f62652067726561746572207468616e20300000000000000000000000000000006064820152608401610357565b61083d7f00000000000000000000000000000000000000000000000000000000000000008383610dcb565b5050565b610849610d4a565b600081116108d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c655465616d5061796d656e74733a20416d6f756e74206d7573742060448201527f62652067726561746572207468616e20300000000000000000000000000000006064820152608401610357565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260408120805483929061090e9084906114c1565b9091555061093f90507f00000000000000000000000000000000000000000000000000000000000000008383610dcb565b8173ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a8260405161068691815260200190565b61098f610d4a565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260409020548190610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655465616d5061796d656e74733a204d656d626572206e6f74206660448201527f6f756e64000000000000000000000000000000000000000000000000000000006064820152608401610357565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020908152604080832054600190925290912055565b610a7e610d4a565b73ffffffffffffffffffffffffffffffffffffffff8116610b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610357565b610b2a81610e5d565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260408120548290610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655465616d5061796d656e74733a204d656d626572206e6f74206660448201527f6f756e64000000000000000000000000000000000000000000000000000000006064820152608401610357565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040812054610c507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006114da565b610c7a7f0000000000000000000000000000000000000000000000000000000000000000426114da565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260016020526040902054610caa91906114ed565b610cb49190611504565b610cbe91906114da565b73ffffffffffffffffffffffffffffffffffffffff851660009081526001602090815260408083205460029092529091205491925090610cfe90836114c1565b1115610d435773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832054600190925290912054610d4091906114da565b90505b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610357565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610e58908490610ed2565b505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610f34826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610fe19092919063ffffffff16565b9050805160001480610f55575080806020019051810190610f55919061153f565b610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610357565b6060610ff08484600085610ff8565b949350505050565b60608247101561108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610357565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516110b39190611585565b60006040518083038185875af1925050503d80600081146110f0576040519150601f19603f3d011682016040523d82523d6000602084013e6110f5565b606091505b509150915061110687838387611111565b979650505050505050565b606083156111a75782516000036111a05773ffffffffffffffffffffffffffffffffffffffff85163b6111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610357565b5081610ff0565b610ff083838151156111bc5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035791906115a1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611266576112666111f0565b604052919050565b600067ffffffffffffffff821115611288576112886111f0565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146112b657600080fd5b919050565b600082601f8301126112cc57600080fd5b813560206112e16112dc8361126e565b61121f565b82815260059290921b8401810191818101908684111561130057600080fd5b8286015b8481101561131b5780358352918301918301611304565b509695505050505050565b6000806040838503121561133957600080fd5b823567ffffffffffffffff8082111561135157600080fd5b818501915085601f83011261136557600080fd5b813560206113756112dc8361126e565b82815260059290921b8401810191818101908984111561139457600080fd5b948201945b838610156113b9576113aa86611292565b82529482019490820190611399565b965050860135925050808211156113cf57600080fd5b506113dc858286016112bb565b9150509250929050565b600080604083850312156113f957600080fd5b61140283611292565b946020939093013593505050565b60006020828403121561142257600080fd5b610d4382611292565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114ba576114ba61145a565b5060010190565b808201808211156114d4576114d461145a565b92915050565b818103818111156114d4576114d461145a565b80820281158282048414176114d4576114d461145a565b60008261153a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561155157600080fd5b81518015158114610d4357600080fd5b60005b8381101561157c578181015183820152602001611564565b50506000910152565b60008251611597818460208701611561565b9190910192915050565b60208152600082518060208401526115c0816040850160208701611561565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122032285919a4842dff17427470c6acba907e45e2d300125a483b023ff04eb01d5564736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/admin/TempleTeamPaymentsFactory.sol/TempleTeamPaymentsFactory.json b/apps/dapp/abi/contracts/admin/TempleTeamPaymentsFactory.sol/TempleTeamPaymentsFactory.json new file mode 100644 index 000000000..94c83b18d --- /dev/null +++ b/apps/dapp/abi/contracts/admin/TempleTeamPaymentsFactory.sol/TempleTeamPaymentsFactory.json @@ -0,0 +1,343 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleTeamPaymentsFactory", + "sourceName": "contracts/admin/TempleTeamPaymentsFactory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_implementation", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_lastPaidEpoch", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AllocationAddressZero", + "type": "error" + }, + { + "inputs": [], + "name": "AllocationsLengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "ClaimZeroValue", + "type": "error" + }, + { + "inputs": [], + "name": "ImplementationAddressZero", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "fundingRound", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address[]", + "name": "dests", + "type": "address[]" + }, + { + "indexed": true, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "address", + "name": "deployedTo", + "type": "address" + } + ], + "name": "FundingDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "fundingRound", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address[]", + "name": "dests", + "type": "address[]" + }, + { + "indexed": true, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "FundingPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "ImplementationChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRecovered", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_dests", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_allocations", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "_totalFunding", + "type": "uint256" + } + ], + "name": "deployPayouts", + "outputs": [ + { + "internalType": "contract TempleTeamPaymentsV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_dests", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_allocations", + "type": "uint256[]" + } + ], + "name": "directPayouts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "epochsFunded", + "outputs": [ + { + "internalType": "address", + "name": "paymentContract", + "type": "address" + }, + { + "internalType": "uint16", + "name": "epoch", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "totalFunding", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialEpoch", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastPaidEpoch", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_templeTeamPaymentsImplementation", + "type": "address" + } + ], + "name": "setTempleTeamPaymentsImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeTeamPaymentsImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162001728380380620017288339810160408190526200003491620000d5565b6200003f3362000085565b6001805461ffff8316600160a01b026001600160b01b03199091166001600160a01b038516171781556200007590829062000125565b61ffff1660805250620001569050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060408385031215620000e957600080fd5b82516001600160a01b03811681146200010157600080fd5b602084015190925061ffff811681146200011a57600080fd5b809150509250929050565b61ffff8181168382160190808211156200014f57634e487b7160e01b600052601160045260246000fd5b5092915050565b6080516115b66200017260003960006101e901526115b66000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806370ef4ad3116100815780639e281a981161005b5780639e281a9814610244578063f2fde38b14610257578063f36d583f1461026a57600080fd5b806370ef4ad3146101e4578063715018a61461021e5780638da5cb5b1461022657600080fd5b80634795b7aa116100b25780634795b7aa146100f657806359ab3e7b146101405780635c99b931146101d157600080fd5b80633e42e49b146100ce5780633e5a4ded146100e3575b600080fd5b6100e16100dc366004611121565b610290565b005b6100e16100f1366004611191565b610354565b6001546101169073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61019c61014e366004611214565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff82169174010000000000000000000000000000000000000000900461ffff169083565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845261ffff909216602084015290820152606001610137565b6101166101df36600461122d565b61051f565b61020b7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610137565b6100e1610860565b60005473ffffffffffffffffffffffffffffffffffffffff16610116565b6100e16102523660046112b8565b610874565b6100e1610265366004611121565b610915565b60015461020b9074010000000000000000000000000000000000000000900461ffff1681565b6102986109d1565b73ffffffffffffffffffffffffffffffffffffffff81166102e5576040517f4bc15f0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2989b377844ae55f0ca303ad21490d8519f8cf871ad6b5ba3dbec736bb54c63f90600090a250565b61035c6109d1565b828114610395576040517fb3a5096900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b848110156104925760008686838181106103b5576103b56112e4565b90506020020160208101906103ca9190611121565b905073ffffffffffffffffffffffffffffffffffffffff8116610419576040517f3668db1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085858481811061042d5761042d6112e4565b90506020020135905080600003610470576040517f325a011400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61047c89338484610a52565b6104868185611342565b93505050600101610399565b5061049d3082610b34565b82826040516104ad929190611355565b604051809103902085856040516104c5929190611397565b60405190819003812060015490917401000000000000000000000000000000000000000090910461ffff16907fb51d0a90e6ca194c350b81f9965917278c2480d0f770c0d42f260fe623e65e1d90600090a4505050505050565b60006105296109d1565b600087600160149054906101000a900461ffff16600161054991906113e6565b6040516020016105af92919060609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016825260f01b7fffff00000000000000000000000000000000000000000000000000000000000016601482015260160190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012060015490915060009061060e9073ffffffffffffffffffffffffffffffffffffffff1683610c47565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561067b57600080fd5b505af115801561068f573d6000803e3d6000fd5b50506040517f1ff64acd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169250631ff64acd91506106eb908b908b908b908b90600401611408565b600060405180830381600087803b15801561070557600080fd5b505af1158015610719573d6000803e3d6000fd5b50506040517ff2fde38b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416925063f2fde38b9150602401600060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b50505050836000146107b0576107b089338387610a52565b6107ba8185610b34565b85856040516107ca929190611355565b604051809103902088886040516107e2929190611397565b60405190819003812060015473ffffffffffffffffffffffffffffffffffffffff8516835290917401000000000000000000000000000000000000000090910461ffff16907f82b2b476561f8414387dc96d9ff0745099bbf7601d37cb74abec4d193a4ead6b9060200160405180910390a498975050505050505050565b6108686109d1565b6108726000610d11565b565b61087c6109d1565b806000036108b6576040517f325a011400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c1823383610d86565b8173ffffffffffffffffffffffffffffffffffffffff167f4590b594be6fdef6bd5e18792a2494ddf2156b618c7bbe48d13a92831208af058260405161090991815260200190565b60405180910390a25050565b61091d6109d1565b73ffffffffffffffffffffffffffffffffffffffff81166109c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109ce81610d11565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109bc565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610b2e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610de1565b50505050565b604080516060810190915273ffffffffffffffffffffffffffffffffffffffff831681526001805460009291602083019174010000000000000000000000000000000000000000900461ffff16906014610b8d836114ac565b82546101009290920a61ffff81810219909316918316021790915590811682526020918201949094526001805474010000000000000000000000000000000000000000908190048616600090815260028452604090819020855181549587015173ffffffffffffffffffffffffffffffffffffffff9091167fffffffffffffffffffff0000000000000000000000000000000000000000000090961695909517949097169091029290921785559101519201919091555050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f5905073ffffffffffffffffffffffffffffffffffffffff8116610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016109bc565b92915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610ddc9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610aac565b505050565b6000610e43826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610ef09092919063ffffffff16565b9050805160001480610e64575080806020019051810190610e6491906114cd565b610ddc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109bc565b6060610eff8484600085610f07565b949350505050565b606082471015610f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016109bc565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610fc29190611513565b60006040518083038185875af1925050503d8060008114610fff576040519150601f19603f3d011682016040523d82523d6000602084013e611004565b606091505b509150915061101587838387611020565b979650505050505050565b606083156110b65782516000036110af5773ffffffffffffffffffffffffffffffffffffffff85163b6110af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109bc565b5081610eff565b610eff83838151156110cb5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc919061152f565b73ffffffffffffffffffffffffffffffffffffffff811681146109ce57600080fd5b60006020828403121561113357600080fd5b813561113e816110ff565b9392505050565b60008083601f84011261115757600080fd5b50813567ffffffffffffffff81111561116f57600080fd5b6020830191508360208260051b850101111561118a57600080fd5b9250929050565b6000806000806000606086880312156111a957600080fd5b85356111b4816110ff565b9450602086013567ffffffffffffffff808211156111d157600080fd5b6111dd89838a01611145565b909650945060408801359150808211156111f657600080fd5b5061120388828901611145565b969995985093965092949392505050565b60006020828403121561122657600080fd5b5035919050565b6000806000806000806080878903121561124657600080fd5b8635611251816110ff565b9550602087013567ffffffffffffffff8082111561126e57600080fd5b61127a8a838b01611145565b9097509550604089013591508082111561129357600080fd5b506112a089828a01611145565b979a9699509497949695606090950135949350505050565b600080604083850312156112cb57600080fd5b82356112d6816110ff565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610d0b57610d0b611313565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561138457600080fd5b8260051b80858437919091019392505050565b60008184825b858110156113db5781356113b0816110ff565b73ffffffffffffffffffffffffffffffffffffffff168352602092830192919091019060010161139d565b509095945050505050565b61ffff81811683821601908082111561140157611401611313565b5092915050565b6040808252810184905260008560608301825b8781101561145857823561142e816110ff565b73ffffffffffffffffffffffffffffffffffffffff1682526020928301929091019060010161141b565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561149157600080fd5b8460051b915081866020830137016020019695505050505050565b600061ffff8083168181036114c3576114c3611313565b6001019392505050565b6000602082840312156114df57600080fd5b8151801515811461113e57600080fd5b60005b8381101561150a5781810151838201526020016114f2565b50506000910152565b600082516115258184602087016114ef565b9190910192915050565b602081526000825180602084015261154e8160408501602087016114ef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200be8f63a7b24754bc73597fd78c14ca539137f52fea06784c791b0de779cbc2f64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c806370ef4ad3116100815780639e281a981161005b5780639e281a9814610244578063f2fde38b14610257578063f36d583f1461026a57600080fd5b806370ef4ad3146101e4578063715018a61461021e5780638da5cb5b1461022657600080fd5b80634795b7aa116100b25780634795b7aa146100f657806359ab3e7b146101405780635c99b931146101d157600080fd5b80633e42e49b146100ce5780633e5a4ded146100e3575b600080fd5b6100e16100dc366004611121565b610290565b005b6100e16100f1366004611191565b610354565b6001546101169073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61019c61014e366004611214565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff82169174010000000000000000000000000000000000000000900461ffff169083565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845261ffff909216602084015290820152606001610137565b6101166101df36600461122d565b61051f565b61020b7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610137565b6100e1610860565b60005473ffffffffffffffffffffffffffffffffffffffff16610116565b6100e16102523660046112b8565b610874565b6100e1610265366004611121565b610915565b60015461020b9074010000000000000000000000000000000000000000900461ffff1681565b6102986109d1565b73ffffffffffffffffffffffffffffffffffffffff81166102e5576040517f4bc15f0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2989b377844ae55f0ca303ad21490d8519f8cf871ad6b5ba3dbec736bb54c63f90600090a250565b61035c6109d1565b828114610395576040517fb3a5096900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b848110156104925760008686838181106103b5576103b56112e4565b90506020020160208101906103ca9190611121565b905073ffffffffffffffffffffffffffffffffffffffff8116610419576040517f3668db1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085858481811061042d5761042d6112e4565b90506020020135905080600003610470576040517f325a011400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61047c89338484610a52565b6104868185611342565b93505050600101610399565b5061049d3082610b34565b82826040516104ad929190611355565b604051809103902085856040516104c5929190611397565b60405190819003812060015490917401000000000000000000000000000000000000000090910461ffff16907fb51d0a90e6ca194c350b81f9965917278c2480d0f770c0d42f260fe623e65e1d90600090a4505050505050565b60006105296109d1565b600087600160149054906101000a900461ffff16600161054991906113e6565b6040516020016105af92919060609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016825260f01b7fffff00000000000000000000000000000000000000000000000000000000000016601482015260160190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012060015490915060009061060e9073ffffffffffffffffffffffffffffffffffffffff1683610c47565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561067b57600080fd5b505af115801561068f573d6000803e3d6000fd5b50506040517f1ff64acd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169250631ff64acd91506106eb908b908b908b908b90600401611408565b600060405180830381600087803b15801561070557600080fd5b505af1158015610719573d6000803e3d6000fd5b50506040517ff2fde38b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416925063f2fde38b9150602401600060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b50505050836000146107b0576107b089338387610a52565b6107ba8185610b34565b85856040516107ca929190611355565b604051809103902088886040516107e2929190611397565b60405190819003812060015473ffffffffffffffffffffffffffffffffffffffff8516835290917401000000000000000000000000000000000000000090910461ffff16907f82b2b476561f8414387dc96d9ff0745099bbf7601d37cb74abec4d193a4ead6b9060200160405180910390a498975050505050505050565b6108686109d1565b6108726000610d11565b565b61087c6109d1565b806000036108b6576040517f325a011400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c1823383610d86565b8173ffffffffffffffffffffffffffffffffffffffff167f4590b594be6fdef6bd5e18792a2494ddf2156b618c7bbe48d13a92831208af058260405161090991815260200190565b60405180910390a25050565b61091d6109d1565b73ffffffffffffffffffffffffffffffffffffffff81166109c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109ce81610d11565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109bc565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610b2e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610de1565b50505050565b604080516060810190915273ffffffffffffffffffffffffffffffffffffffff831681526001805460009291602083019174010000000000000000000000000000000000000000900461ffff16906014610b8d836114ac565b82546101009290920a61ffff81810219909316918316021790915590811682526020918201949094526001805474010000000000000000000000000000000000000000908190048616600090815260028452604090819020855181549587015173ffffffffffffffffffffffffffffffffffffffff9091167fffffffffffffffffffff0000000000000000000000000000000000000000000090961695909517949097169091029290921785559101519201919091555050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f5905073ffffffffffffffffffffffffffffffffffffffff8116610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016109bc565b92915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610ddc9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610aac565b505050565b6000610e43826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610ef09092919063ffffffff16565b9050805160001480610e64575080806020019051810190610e6491906114cd565b610ddc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109bc565b6060610eff8484600085610f07565b949350505050565b606082471015610f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016109bc565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610fc29190611513565b60006040518083038185875af1925050503d8060008114610fff576040519150601f19603f3d011682016040523d82523d6000602084013e611004565b606091505b509150915061101587838387611020565b979650505050505050565b606083156110b65782516000036110af5773ffffffffffffffffffffffffffffffffffffffff85163b6110af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109bc565b5081610eff565b610eff83838151156110cb5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc919061152f565b73ffffffffffffffffffffffffffffffffffffffff811681146109ce57600080fd5b60006020828403121561113357600080fd5b813561113e816110ff565b9392505050565b60008083601f84011261115757600080fd5b50813567ffffffffffffffff81111561116f57600080fd5b6020830191508360208260051b850101111561118a57600080fd5b9250929050565b6000806000806000606086880312156111a957600080fd5b85356111b4816110ff565b9450602086013567ffffffffffffffff808211156111d157600080fd5b6111dd89838a01611145565b909650945060408801359150808211156111f657600080fd5b5061120388828901611145565b969995985093965092949392505050565b60006020828403121561122657600080fd5b5035919050565b6000806000806000806080878903121561124657600080fd5b8635611251816110ff565b9550602087013567ffffffffffffffff8082111561126e57600080fd5b61127a8a838b01611145565b9097509550604089013591508082111561129357600080fd5b506112a089828a01611145565b979a9699509497949695606090950135949350505050565b600080604083850312156112cb57600080fd5b82356112d6816110ff565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610d0b57610d0b611313565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561138457600080fd5b8260051b80858437919091019392505050565b60008184825b858110156113db5781356113b0816110ff565b73ffffffffffffffffffffffffffffffffffffffff168352602092830192919091019060010161139d565b509095945050505050565b61ffff81811683821601908082111561140157611401611313565b5092915050565b6040808252810184905260008560608301825b8781101561145857823561142e816110ff565b73ffffffffffffffffffffffffffffffffffffffff1682526020928301929091019060010161141b565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561149157600080fd5b8460051b915081866020830137016020019695505050505050565b600061ffff8083168181036114c3576114c3611313565b6001019392505050565b6000602082840312156114df57600080fd5b8151801515811461113e57600080fd5b60005b8381101561150a5781810151838201526020016114f2565b50506000910152565b600082516115258184602087016114ef565b9190910192915050565b602081526000825180602084015261154e8160408501602087016114ef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200be8f63a7b24754bc73597fd78c14ca539137f52fea06784c791b0de779cbc2f64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/admin/TempleTeamPaymentsV2.sol/TempleTeamPaymentsV2.json b/apps/dapp/abi/contracts/admin/TempleTeamPaymentsV2.sol/TempleTeamPaymentsV2.json new file mode 100644 index 000000000..caa26b0da --- /dev/null +++ b/apps/dapp/abi/contracts/admin/TempleTeamPaymentsV2.sol/TempleTeamPaymentsV2.json @@ -0,0 +1,354 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleTeamPaymentsV2", + "sourceName": "contracts/admin/TempleTeamPaymentsV2.sol", + "abi": [ + { + "inputs": [], + "name": "AllocationAddressZero", + "type": "error" + }, + { + "inputs": [], + "name": "AllocationsLengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "ClaimMemberPaused", + "type": "error" + }, + { + "inputs": [], + "name": "ClaimZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "allocation", + "type": "uint256" + } + ], + "name": "AllocationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Claimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "MemberToggled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRecovered", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allocation", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_member", + "type": "address" + } + ], + "name": "calculateClaimable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_claimAmount", + "type": "uint256" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_temple", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setAllocation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_amounts", + "type": "uint256[]" + } + ], + "name": "setAllocations", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "temple", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "toggleMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061120a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639e281a981161008c578063c884ef8311610066578063c884ef831461021d578063e62df6f41461023d578063f2fde38b14610250578063fe7b00071461026357600080fd5b80639e281a98146101c9578063b81b8630146101dc578063c4d66de81461020a57600080fd5b8063715018a6116100c8578063715018a61461014f5780638da5cb5b146101575780639076c1661461019657806397cd9a34146101a957600080fd5b80631ff64acd146100ef5780632e48152c14610104578063379607f51461013c575b600080fd5b6101026100fd366004610f72565b610276565b005b610127610112366004611034565b60686020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61010261014a366004611058565b61030e565b61010261042d565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610133565b6101026101a4366004611071565b610441565b6065546101719073ffffffffffffffffffffffffffffffffffffffff1681565b6101026101d7366004611071565b610457565b6101fc6101ea366004611034565b60666020526000908152604090205481565b604051908152602001610133565b610102610218366004611034565b6104ec565b6101fc61022b366004611034565b60676020526000908152604090205481565b61010261024b366004611034565b6106c3565b61010261025e366004611034565b610761565b6101fc610271366004611034565b610818565b61027e610859565b80518251146102b9576040517fb3a5096900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610309576103018382815181106102da576102da61109d565b60200260200101518383815181106102f4576102f461109d565b60200260200101516108da565b6001016102bc565b505050565b3360009081526068602052604090205460ff1615610358576040517ff96bc70800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061036333610818565b90508060000361039f576040517f325a011400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808211156103ab578091505b33600090815260676020526040812080548492906103ca9084906110fb565b90915550506065546103f39073ffffffffffffffffffffffffffffffffffffffff163384610981565b60405182815233907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a906020015b60405180910390a25050565b610435610859565b61043f6000610a0e565b565b610449610859565b61045382826108da565b5050565b61045f610859565b80600003610499576040517f325a011400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104a4823383610981565b8173ffffffffffffffffffffffffffffffffffffffff167f4590b594be6fdef6bd5e18792a2494ddf2156b618c7bbe48d13a92831208af058260405161042191815260200190565b600054610100900460ff161580801561050c5750600054600160ff909116105b806105265750303b158015610526575060005460ff166001145b6105b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561061557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61061d610a85565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6106cb610859565b73ffffffffffffffffffffffffffffffffffffffff81166000818152606860205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff9182161590811790925591517f2fb26ecb06f91eb2cafa469f8c793ca039aec03cb5ba97207b81afcd576734959261075692161515815260200190565b60405180910390a250565b610769610859565b73ffffffffffffffffffffffffffffffffffffffff811661080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105ae565b61081581610a0e565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152606760209081526040808320546066909252822054610853919061110e565b92915050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461043f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ae565b73ffffffffffffffffffffffffffffffffffffffff8216610927576040517f3668db1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526066602052604090819020839055517fedfc909d0ab2a1625b7911d925efbd8200cdd99d4c7ba44e720328b17879f0b3906104219084815260200190565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610309908490610b25565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610b1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105ae565b61043f33610a0e565b6000610b87826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610c349092919063ffffffff16565b9050805160001480610ba8575080806020019051810190610ba89190611121565b610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016105ae565b6060610c438484600085610c4b565b949350505050565b606082471015610cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016105ae565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610d069190611167565b60006040518083038185875af1925050503d8060008114610d43576040519150601f19603f3d011682016040523d82523d6000602084013e610d48565b606091505b5091509150610d5987838387610d64565b979650505050505050565b60608315610dfa578251600003610df35773ffffffffffffffffffffffffffffffffffffffff85163b610df3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105ae565b5081610c43565b610c438383815115610e0f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae9190611183565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610eb957610eb9610e43565b604052919050565b600067ffffffffffffffff821115610edb57610edb610e43565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461081557600080fd5b600082601f830112610f1857600080fd5b81356020610f2d610f2883610ec1565b610e72565b82815260059290921b84018101918181019086841115610f4c57600080fd5b8286015b84811015610f675780358352918301918301610f50565b509695505050505050565b60008060408385031215610f8557600080fd5b823567ffffffffffffffff80821115610f9d57600080fd5b818501915085601f830112610fb157600080fd5b81356020610fc1610f2883610ec1565b82815260059290921b84018101918181019089841115610fe057600080fd5b948201945b83861015611007578535610ff881610ee5565b82529482019490820190610fe5565b9650508601359250508082111561101d57600080fd5b5061102a85828601610f07565b9150509250929050565b60006020828403121561104657600080fd5b813561105181610ee5565b9392505050565b60006020828403121561106a57600080fd5b5035919050565b6000806040838503121561108457600080fd5b823561108f81610ee5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610853576108536110cc565b81810381811115610853576108536110cc565b60006020828403121561113357600080fd5b8151801515811461105157600080fd5b60005b8381101561115e578181015183820152602001611146565b50506000910152565b60008251611179818460208701611143565b9190910192915050565b60208152600082518060208401526111a2816040850160208701611143565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e16c930745fe4c1ae79ffd12c11c8bd1f9a7ec9663d4328c675986485a41520464736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639e281a981161008c578063c884ef8311610066578063c884ef831461021d578063e62df6f41461023d578063f2fde38b14610250578063fe7b00071461026357600080fd5b80639e281a98146101c9578063b81b8630146101dc578063c4d66de81461020a57600080fd5b8063715018a6116100c8578063715018a61461014f5780638da5cb5b146101575780639076c1661461019657806397cd9a34146101a957600080fd5b80631ff64acd146100ef5780632e48152c14610104578063379607f51461013c575b600080fd5b6101026100fd366004610f72565b610276565b005b610127610112366004611034565b60686020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61010261014a366004611058565b61030e565b61010261042d565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610133565b6101026101a4366004611071565b610441565b6065546101719073ffffffffffffffffffffffffffffffffffffffff1681565b6101026101d7366004611071565b610457565b6101fc6101ea366004611034565b60666020526000908152604090205481565b604051908152602001610133565b610102610218366004611034565b6104ec565b6101fc61022b366004611034565b60676020526000908152604090205481565b61010261024b366004611034565b6106c3565b61010261025e366004611034565b610761565b6101fc610271366004611034565b610818565b61027e610859565b80518251146102b9576040517fb3a5096900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610309576103018382815181106102da576102da61109d565b60200260200101518383815181106102f4576102f461109d565b60200260200101516108da565b6001016102bc565b505050565b3360009081526068602052604090205460ff1615610358576040517ff96bc70800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061036333610818565b90508060000361039f576040517f325a011400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808211156103ab578091505b33600090815260676020526040812080548492906103ca9084906110fb565b90915550506065546103f39073ffffffffffffffffffffffffffffffffffffffff163384610981565b60405182815233907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a906020015b60405180910390a25050565b610435610859565b61043f6000610a0e565b565b610449610859565b61045382826108da565b5050565b61045f610859565b80600003610499576040517f325a011400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104a4823383610981565b8173ffffffffffffffffffffffffffffffffffffffff167f4590b594be6fdef6bd5e18792a2494ddf2156b618c7bbe48d13a92831208af058260405161042191815260200190565b600054610100900460ff161580801561050c5750600054600160ff909116105b806105265750303b158015610526575060005460ff166001145b6105b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561061557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61061d610a85565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6106cb610859565b73ffffffffffffffffffffffffffffffffffffffff81166000818152606860205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff9182161590811790925591517f2fb26ecb06f91eb2cafa469f8c793ca039aec03cb5ba97207b81afcd576734959261075692161515815260200190565b60405180910390a250565b610769610859565b73ffffffffffffffffffffffffffffffffffffffff811661080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105ae565b61081581610a0e565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152606760209081526040808320546066909252822054610853919061110e565b92915050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461043f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ae565b73ffffffffffffffffffffffffffffffffffffffff8216610927576040517f3668db1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526066602052604090819020839055517fedfc909d0ab2a1625b7911d925efbd8200cdd99d4c7ba44e720328b17879f0b3906104219084815260200190565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610309908490610b25565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610b1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105ae565b61043f33610a0e565b6000610b87826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610c349092919063ffffffff16565b9050805160001480610ba8575080806020019051810190610ba89190611121565b610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016105ae565b6060610c438484600085610c4b565b949350505050565b606082471015610cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016105ae565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610d069190611167565b60006040518083038185875af1925050503d8060008114610d43576040519150601f19603f3d011682016040523d82523d6000602084013e610d48565b606091505b5091509150610d5987838387610d64565b979650505050505050565b60608315610dfa578251600003610df35773ffffffffffffffffffffffffffffffffffffffff85163b610df3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105ae565b5081610c43565b610c438383815115610e0f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae9190611183565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610eb957610eb9610e43565b604052919050565b600067ffffffffffffffff821115610edb57610edb610e43565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461081557600080fd5b600082601f830112610f1857600080fd5b81356020610f2d610f2883610ec1565b610e72565b82815260059290921b84018101918181019086841115610f4c57600080fd5b8286015b84811015610f675780358352918301918301610f50565b509695505050505050565b60008060408385031215610f8557600080fd5b823567ffffffffffffffff80821115610f9d57600080fd5b818501915085601f830112610fb157600080fd5b81356020610fc1610f2883610ec1565b82815260059290921b84018101918181019089841115610fe057600080fd5b948201945b83861015611007578535610ff881610ee5565b82529482019490820190610fe5565b9650508601359250508082111561101d57600080fd5b5061102a85828601610f07565b9150509250929050565b60006020828403121561104657600080fd5b813561105181610ee5565b9392505050565b60006020828403121561106a57600080fd5b5035919050565b6000806040838503121561108457600080fd5b823561108f81610ee5565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610853576108536110cc565b81810381811115610853576108536110cc565b60006020828403121561113357600080fd5b8151801515811461105157600080fd5b60005b8381101561115e578181015183820152602001611146565b50506000910152565b60008251611179818460208701611143565b9190910192915050565b60208152600082518060208401526111a2816040850160208701611143565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e16c930745fe4c1ae79ffd12c11c8bd1f9a7ec9663d4328c675986485a41520464736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/ITempleTWAP.json b/apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/ITempleTWAP.json new file mode 100644 index 000000000..d7f31e174 --- /dev/null +++ b/apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/ITempleTWAP.json @@ -0,0 +1,31 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITempleTWAP", + "sourceName": "contracts/amm/TempleStableAMMRouter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "name": "consult", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/ITreasuryIV.json b/apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/ITreasuryIV.json new file mode 100644 index 000000000..1628b2569 --- /dev/null +++ b/apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/ITreasuryIV.json @@ -0,0 +1,29 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITreasuryIV", + "sourceName": "contracts/amm/TempleStableAMMRouter.sol", + "abi": [ + { + "inputs": [], + "name": "intrinsicValueRatio", + "outputs": [ + { + "internalType": "uint256", + "name": "frax", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "temple", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/TempleStableAMMRouter.json b/apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/TempleStableAMMRouter.json new file mode 100644 index 000000000..00f302b9c --- /dev/null +++ b/apps/dapp/abi/contracts/amm/TempleStableAMMRouter.sol/TempleStableAMMRouter.json @@ -0,0 +1,506 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleStableAMMRouter", + "sourceName": "contracts/amm/TempleStableAMMRouter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract TempleERC20Token", + "name": "_templeToken", + "type": "address" + }, + { + "internalType": "contract ITreasuryIV", + "name": "_templeTreasury", + "type": "address" + }, + { + "internalType": "address", + "name": "_defendStable", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "stable", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "_pair", + "type": "address" + } + ], + "name": "addPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "defendStable", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "stable", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_defendStable", + "type": "address" + } + ], + "name": "setDefendStable", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ITreasuryIV", + "name": "_templeTreasury", + "type": "address" + } + ], + "name": "setTreasury", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "stable", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactStableForTemple", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "name": "swapExactStableForTempleQuote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "stable", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTempleForStable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "name": "swapExactTempleForStableQuote", + "outputs": [ + { + "internalType": "bool", + "name": "priceBelowIV", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract TempleERC20Token", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "templeTreasury", + "outputs": [ + { + "internalType": "contract ITreasuryIV", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "tokenPair", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a06040523480156200001157600080fd5b50604051620024de380380620024de8339810160408190526200003491620000df565b6200003f3362000076565b6001600160a01b03928316608052600280549284166001600160a01b03199384161790556003805491909316911617905562000133565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000dc57600080fd5b50565b600080600060608486031215620000f557600080fd5b83516200010281620000c6565b60208501519093506200011581620000c6565b60408501519092506200012881620000c6565b809150509250925092565b60805161237a62000164600039600081816102dd015281816106e9015281816114d00152611600015261237a6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638da5cb5b116100cd578063c4b58a1e11610081578063e94e36b911610066578063e94e36b914610358578063f0f442601461036b578063f2fde38b1461037e57600080fd5b8063c4b58a1e14610332578063d9caed121461034557600080fd5b8063b1a9069c116100b2578063b1a9069c146102d8578063b272d5a2146102ff578063b6f3e0871461031f57600080fd5b80638da5cb5b146102a7578063ad615dec146102c557600080fd5b80632c908de5116101245780636727a70b116101095780636727a70b14610262578063715018a61461028a578063854f71061461029457600080fd5b80632c908de5146102255780634dfe82a51461023857600080fd5b8063054d50d41461015657806314e920981461017c5780631cc6391e146101aa57806328fef2a114610205575b600080fd5b610169610164366004611e96565b610391565b6040519081526020015b60405180910390f35b61018f61018a366004611ee4565b610511565b60408051938452602084019290925290820152606001610173565b6101e06101b8366004611f4d565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610173565b6002546101e09073ffffffffffffffffffffffffffffffffffffffff1681565b610169610233366004611f71565b6107bf565b61024b610246366004611f71565b61086c565b604080519215158352602083019190915201610173565b610275610270366004611f9d565b6109ea565b60408051928352602083019190915201610173565b610292610cdc565b005b6101696102a2366004611ffb565b610cf0565b60005473ffffffffffffffffffffffffffffffffffffffff166101e0565b6101696102d3366004611e96565b610f5e565b6101e07f000000000000000000000000000000000000000000000000000000000000000081565b6003546101e09073ffffffffffffffffffffffffffffffffffffffff1681565b61029261032d36600461204d565b6110a8565b610292610340366004611f4d565b611103565b610292610353366004612086565b611152565b610169610366366004611ffb565b6112d2565b610292610379366004611f4d565b6116cc565b61029261038c366004611f4d565b61171b565b6000808411610427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4960448201527f4e5055545f414d4f554e5400000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000831180156104375750600082115b6104c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60448201527f4951554944495459000000000000000000000000000000000000000000000000606482015260840161041e565b60006104d1856103e36120f6565b905060006104df84836120f6565b90506000826104f0876103e86120f6565b6104fa9190612113565b90506105068183612126565b979650505050505050565b60008060008342811015610581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f54656d706c65537461626c65414d4d526f757465723a20455850495245440000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600160205260409020541680610636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54656d706c65537461626c65414d4d526f757465723a20554e535550504f525460448201527f45445f5041495200000000000000000000000000000000000000000000000000606482015260840161041e565b898c101580156106465750888b10155b6106d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f54656d706c65537461626c65414d4d526f757465723a204d45565f455854524160448201527f435441424c450000000000000000000000000000000000000000000000000000606482015260840161041e565b6106df8c8c8c8c856117d2565b90955093506107107f00000000000000000000000000000000000000000000000000000000000000003383886119fe565b61071c883383876119fe565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152821690636a627842906024016020604051808303816000875af115801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190612161565b925050509750975097945050505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561080f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610833919061219d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150610863848284610391565b95945050505050565b6000806000808573ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061219d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a340bae26040518163ffffffff1660e01b81526004016040805180830381865afa158015610975573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099991906121ed565b9150915060006109aa888686610391565b90506000826109b9858b6120f6565b6109c39190612126565b9050818111156109d957809650600197506109dd565b8196505b5050505050509250929050565b6000808242811015610a58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f54656d706c65537461626c65414d4d526f757465723a20455850495245440000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600160205260409020541680610b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54656d706c65537461626c65414d4d526f757465723a20554e535550504f525460448201527f45445f5041495200000000000000000000000000000000000000000000000000606482015260840161041e565b610b198133838d6119fe565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528216906389afcb449060240160408051808303816000875af1158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa91906121ed565b909450925088841015610c3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f54454d504c4500000000000000000000000000000000000000000000606482015260840161041e565b87831015610ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f54656d706c6546726178414d4d526f757465723a20494e53554646494349454e60448201527f545f465241580000000000000000000000000000000000000000000000000000606482015260840161041e565b5050965096945050505050565b610ce4611ada565b610cee6000611b5b565b565b60008142811015610d5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f54656d706c65537461626c65414d4d526f757465723a20455850495245440000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160205260409020541680610e12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54656d706c65537461626c65414d4d526f757465723a20554e535550504f525460448201527f45445f5041495200000000000000000000000000000000000000000000000000606482015260840161041e565b6000610e1e828a6107bf565b905087811015610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f4f55545055545f414d4f554e54000000000000000000000000000000606482015260840161041e565b610ebc8733848c6119fe565b60408051600080825260208201928390527f022c0d9f0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff84169163022c0d9f91610f209185918b906024810161227f565b600060405180830381600087803b158015610f3a57600080fd5b505af1158015610f4e573d6000803e3d6000fd5b5050505050505095945050505050565b6000808411610fef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4160448201527f4d4f554e54000000000000000000000000000000000000000000000000000000606482015260840161041e565b600083118015610fff5750600082115b61108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60448201527f4951554944495459000000000000000000000000000000000000000000000000606482015260840161041e565b8261109683866120f6565b6110a09190612126565b949350505050565b6110b0611ada565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b61110b611ada565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61115a611ada565b73ffffffffffffffffffffffffffffffffffffffff82166111d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f746f2061646472657373207a65726f0000000000000000000000000000000000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff83166112c25760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461124c576040519150601f19603f3d011682016040523d82523d6000602084013e611251565b606091505b50509050806112bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f73656e64206661696c6564000000000000000000000000000000000000000000604482015260640161041e565b50505050565b6112cd838383611bd0565b505050565b6000814281101561133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f54656d706c65537461626c65414d4d526f757465723a20455850495245440000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526001602052604090205416806113f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54656d706c65537461626c65414d4d526f757465723a20554e535550504f525460448201527f45445f5041495200000000000000000000000000000000000000000000000000606482015260840161041e565b600080611401838b61086c565b91509150811561156b578881101561149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f4f55545055545f414d4f554e54000000000000000000000000000000606482015260840161041e565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018b90527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b15801561152957600080fd5b505af115801561153d573d6000803e3d6000fd5b5050600354611566925073ffffffffffffffffffffffffffffffffffffffff1690508883611bd0565b6116bf565b888110156115fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f4f55545055545f414d4f554e54000000000000000000000000000000606482015260840161041e565b6116277f000000000000000000000000000000000000000000000000000000000000000033858d6119fe565b60408051600080825260208201928390527f022c0d9f0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff85169163022c0d9f9161168c919085908c906024810161227f565b600060405180830381600087803b1580156116a657600080fd5b505af11580156116ba573d6000803e3d6000fd5b505050505b9998505050505050505050565b6116d4611ada565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611723611ada565b73ffffffffffffffffffffffffffffffffffffffff81166117c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161041e565b6117cf81611b5b565b50565b6000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611823573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611847919061219d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915081600014801561187a575080155b1561188a578893508792506119f2565b60006118978a8484610f5e565b905088811161193b5786811015611930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f535441424c4500000000000000000000000000000000000000000000606482015260840161041e565b8994509250826119f0565b60006119488a8486610f5e565b90508a81111561195a5761195a6122c4565b888110156119ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f54454d504c4500000000000000000000000000000000000000000000606482015260840161041e565b94508893505b505b50509550959350505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526112bc9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611c26565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041e565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112cd9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611a58565b6000611c88826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611d359092919063ffffffff16565b9050805160001480611ca9575080806020019051810190611ca991906122f3565b6112cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161041e565b60606110a08484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051611d699190612315565b60006040518083038185875af1925050503d8060008114611da6576040519150601f19603f3d011682016040523d82523d6000602084013e611dab565b606091505b50915091506105068783838760608315611e4d578251600003611e465773ffffffffffffffffffffffffffffffffffffffff85163b611e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161041e565b50816110a0565b6110a08383815115611e625781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041e9190612331565b600080600060608486031215611eab57600080fd5b505081359360208301359350604090920135919050565b73ffffffffffffffffffffffffffffffffffffffff811681146117cf57600080fd5b600080600080600080600060e0888a031215611eff57600080fd5b873596506020880135955060408801359450606088013593506080880135611f2681611ec2565b925060a0880135611f3681611ec2565b8092505060c0880135905092959891949750929550565b600060208284031215611f5f57600080fd5b8135611f6a81611ec2565b9392505050565b60008060408385031215611f8457600080fd5b8235611f8f81611ec2565b946020939093013593505050565b60008060008060008060c08789031215611fb657600080fd5b8635955060208701359450604087013593506060870135611fd681611ec2565b92506080870135611fe681611ec2565b8092505060a087013590509295509295509295565b600080600080600060a0868803121561201357600080fd5b8535945060208601359350604086013561202c81611ec2565b9250606086013561203c81611ec2565b949793965091946080013592915050565b6000806040838503121561206057600080fd5b823561206b81611ec2565b9150602083013561207b81611ec2565b809150509250929050565b60008060006060848603121561209b57600080fd5b83356120a681611ec2565b925060208401356120b681611ec2565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761210d5761210d6120c7565b92915050565b8082018082111561210d5761210d6120c7565b60008261215c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561217357600080fd5b5051919050565b80516dffffffffffffffffffffffffffff8116811461219857600080fd5b919050565b6000806000606084860312156121b257600080fd5b6121bb8461217a565b92506121c96020850161217a565b9150604084015163ffffffff811681146121e257600080fd5b809150509250925092565b6000806040838503121561220057600080fd5b505080516020909101519092909150565b60005b8381101561222c578181015183820152602001612214565b50506000910152565b6000815180845261224d816020860160208601612211565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff831660408201526080606082015260006122ba6080830184612235565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561230557600080fd5b81518015158114611f6a57600080fd5b60008251612327818460208701612211565b9190910192915050565b602081526000611f6a602083018461223556fea26469706673582212207030e48074cf60675ca62e39f05b8c8fc90ffe02de4d72a81a8f0718a37d72a264736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101515760003560e01c80638da5cb5b116100cd578063c4b58a1e11610081578063e94e36b911610066578063e94e36b914610358578063f0f442601461036b578063f2fde38b1461037e57600080fd5b8063c4b58a1e14610332578063d9caed121461034557600080fd5b8063b1a9069c116100b2578063b1a9069c146102d8578063b272d5a2146102ff578063b6f3e0871461031f57600080fd5b80638da5cb5b146102a7578063ad615dec146102c557600080fd5b80632c908de5116101245780636727a70b116101095780636727a70b14610262578063715018a61461028a578063854f71061461029457600080fd5b80632c908de5146102255780634dfe82a51461023857600080fd5b8063054d50d41461015657806314e920981461017c5780631cc6391e146101aa57806328fef2a114610205575b600080fd5b610169610164366004611e96565b610391565b6040519081526020015b60405180910390f35b61018f61018a366004611ee4565b610511565b60408051938452602084019290925290820152606001610173565b6101e06101b8366004611f4d565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610173565b6002546101e09073ffffffffffffffffffffffffffffffffffffffff1681565b610169610233366004611f71565b6107bf565b61024b610246366004611f71565b61086c565b604080519215158352602083019190915201610173565b610275610270366004611f9d565b6109ea565b60408051928352602083019190915201610173565b610292610cdc565b005b6101696102a2366004611ffb565b610cf0565b60005473ffffffffffffffffffffffffffffffffffffffff166101e0565b6101696102d3366004611e96565b610f5e565b6101e07f000000000000000000000000000000000000000000000000000000000000000081565b6003546101e09073ffffffffffffffffffffffffffffffffffffffff1681565b61029261032d36600461204d565b6110a8565b610292610340366004611f4d565b611103565b610292610353366004612086565b611152565b610169610366366004611ffb565b6112d2565b610292610379366004611f4d565b6116cc565b61029261038c366004611f4d565b61171b565b6000808411610427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4960448201527f4e5055545f414d4f554e5400000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000831180156104375750600082115b6104c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60448201527f4951554944495459000000000000000000000000000000000000000000000000606482015260840161041e565b60006104d1856103e36120f6565b905060006104df84836120f6565b90506000826104f0876103e86120f6565b6104fa9190612113565b90506105068183612126565b979650505050505050565b60008060008342811015610581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f54656d706c65537461626c65414d4d526f757465723a20455850495245440000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600160205260409020541680610636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54656d706c65537461626c65414d4d526f757465723a20554e535550504f525460448201527f45445f5041495200000000000000000000000000000000000000000000000000606482015260840161041e565b898c101580156106465750888b10155b6106d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f54656d706c65537461626c65414d4d526f757465723a204d45565f455854524160448201527f435441424c450000000000000000000000000000000000000000000000000000606482015260840161041e565b6106df8c8c8c8c856117d2565b90955093506107107f00000000000000000000000000000000000000000000000000000000000000003383886119fe565b61071c883383876119fe565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152821690636a627842906024016020604051808303816000875af115801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190612161565b925050509750975097945050505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561080f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610833919061219d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150610863848284610391565b95945050505050565b6000806000808573ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e1919061219d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a340bae26040518163ffffffff1660e01b81526004016040805180830381865afa158015610975573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099991906121ed565b9150915060006109aa888686610391565b90506000826109b9858b6120f6565b6109c39190612126565b9050818111156109d957809650600197506109dd565b8196505b5050505050509250929050565b6000808242811015610a58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f54656d706c65537461626c65414d4d526f757465723a20455850495245440000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600160205260409020541680610b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54656d706c65537461626c65414d4d526f757465723a20554e535550504f525460448201527f45445f5041495200000000000000000000000000000000000000000000000000606482015260840161041e565b610b198133838d6119fe565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528216906389afcb449060240160408051808303816000875af1158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa91906121ed565b909450925088841015610c3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f54454d504c4500000000000000000000000000000000000000000000606482015260840161041e565b87831015610ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f54656d706c6546726178414d4d526f757465723a20494e53554646494349454e60448201527f545f465241580000000000000000000000000000000000000000000000000000606482015260840161041e565b5050965096945050505050565b610ce4611ada565b610cee6000611b5b565b565b60008142811015610d5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f54656d706c65537461626c65414d4d526f757465723a20455850495245440000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160205260409020541680610e12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54656d706c65537461626c65414d4d526f757465723a20554e535550504f525460448201527f45445f5041495200000000000000000000000000000000000000000000000000606482015260840161041e565b6000610e1e828a6107bf565b905087811015610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f4f55545055545f414d4f554e54000000000000000000000000000000606482015260840161041e565b610ebc8733848c6119fe565b60408051600080825260208201928390527f022c0d9f0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff84169163022c0d9f91610f209185918b906024810161227f565b600060405180830381600087803b158015610f3a57600080fd5b505af1158015610f4e573d6000803e3d6000fd5b5050505050505095945050505050565b6000808411610fef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4160448201527f4d4f554e54000000000000000000000000000000000000000000000000000000606482015260840161041e565b600083118015610fff5750600082115b61108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60448201527f4951554944495459000000000000000000000000000000000000000000000000606482015260840161041e565b8261109683866120f6565b6110a09190612126565b949350505050565b6110b0611ada565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b61110b611ada565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61115a611ada565b73ffffffffffffffffffffffffffffffffffffffff82166111d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f746f2061646472657373207a65726f0000000000000000000000000000000000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff83166112c25760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461124c576040519150601f19603f3d011682016040523d82523d6000602084013e611251565b606091505b50509050806112bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f73656e64206661696c6564000000000000000000000000000000000000000000604482015260640161041e565b50505050565b6112cd838383611bd0565b505050565b6000814281101561133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f54656d706c65537461626c65414d4d526f757465723a20455850495245440000604482015260640161041e565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526001602052604090205416806113f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54656d706c65537461626c65414d4d526f757465723a20554e535550504f525460448201527f45445f5041495200000000000000000000000000000000000000000000000000606482015260840161041e565b600080611401838b61086c565b91509150811561156b578881101561149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f4f55545055545f414d4f554e54000000000000000000000000000000606482015260840161041e565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018b90527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b15801561152957600080fd5b505af115801561153d573d6000803e3d6000fd5b5050600354611566925073ffffffffffffffffffffffffffffffffffffffff1690508883611bd0565b6116bf565b888110156115fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f4f55545055545f414d4f554e54000000000000000000000000000000606482015260840161041e565b6116277f000000000000000000000000000000000000000000000000000000000000000033858d6119fe565b60408051600080825260208201928390527f022c0d9f0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff85169163022c0d9f9161168c919085908c906024810161227f565b600060405180830381600087803b1580156116a657600080fd5b505af11580156116ba573d6000803e3d6000fd5b505050505b9998505050505050505050565b6116d4611ada565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611723611ada565b73ffffffffffffffffffffffffffffffffffffffff81166117c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161041e565b6117cf81611b5b565b50565b6000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611823573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611847919061219d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915081600014801561187a575080155b1561188a578893508792506119f2565b60006118978a8484610f5e565b905088811161193b5786811015611930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f535441424c4500000000000000000000000000000000000000000000606482015260840161041e565b8994509250826119f0565b60006119488a8486610f5e565b90508a81111561195a5761195a6122c4565b888110156119ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54656d706c65537461626c65414d4d526f757465723a20494e5355464649434960448201527f454e545f54454d504c4500000000000000000000000000000000000000000000606482015260840161041e565b94508893505b505b50509550959350505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526112bc9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611c26565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041e565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526112cd9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611a58565b6000611c88826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611d359092919063ffffffff16565b9050805160001480611ca9575080806020019051810190611ca991906122f3565b6112cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161041e565b60606110a08484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051611d699190612315565b60006040518083038185875af1925050503d8060008114611da6576040519150601f19603f3d011682016040523d82523d6000602084013e611dab565b606091505b50915091506105068783838760608315611e4d578251600003611e465773ffffffffffffffffffffffffffffffffffffffff85163b611e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161041e565b50816110a0565b6110a08383815115611e625781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041e9190612331565b600080600060608486031215611eab57600080fd5b505081359360208301359350604090920135919050565b73ffffffffffffffffffffffffffffffffffffffff811681146117cf57600080fd5b600080600080600080600060e0888a031215611eff57600080fd5b873596506020880135955060408801359450606088013593506080880135611f2681611ec2565b925060a0880135611f3681611ec2565b8092505060c0880135905092959891949750929550565b600060208284031215611f5f57600080fd5b8135611f6a81611ec2565b9392505050565b60008060408385031215611f8457600080fd5b8235611f8f81611ec2565b946020939093013593505050565b60008060008060008060c08789031215611fb657600080fd5b8635955060208701359450604087013593506060870135611fd681611ec2565b92506080870135611fe681611ec2565b8092505060a087013590509295509295509295565b600080600080600060a0868803121561201357600080fd5b8535945060208601359350604086013561202c81611ec2565b9250606086013561203c81611ec2565b949793965091946080013592915050565b6000806040838503121561206057600080fd5b823561206b81611ec2565b9150602083013561207b81611ec2565b809150509250929050565b60008060006060848603121561209b57600080fd5b83356120a681611ec2565b925060208401356120b681611ec2565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761210d5761210d6120c7565b92915050565b8082018082111561210d5761210d6120c7565b60008261215c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561217357600080fd5b5051919050565b80516dffffffffffffffffffffffffffff8116811461219857600080fd5b919050565b6000806000606084860312156121b257600080fd5b6121bb8461217a565b92506121c96020850161217a565b9150604084015163ffffffff811681146121e257600080fd5b809150509250925092565b6000806040838503121561220057600080fd5b505080516020909101519092909150565b60005b8381101561222c578181015183820152602001612214565b50506000910152565b6000815180845261224d816020860160208601612211565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff831660408201526080606082015260006122ba6080830184612235565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561230557600080fd5b81518015158114611f6a57600080fd5b60008251612327818460208701612211565b9190910192915050565b602081526000611f6a602083018461223556fea26469706673582212207030e48074cf60675ca62e39f05b8c8fc90ffe02de4d72a81a8f0718a37d72a264736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amm/TempleUniswapV2Pair.sol/TempleUniswapV2Pair.json b/apps/dapp/abi/contracts/amm/TempleUniswapV2Pair.sol/TempleUniswapV2Pair.json new file mode 100644 index 000000000..2a0f45e9e --- /dev/null +++ b/apps/dapp/abi/contracts/amm/TempleUniswapV2Pair.sol/TempleUniswapV2Pair.json @@ -0,0 +1,748 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleUniswapV2Pair", + "sourceName": "contracts/amm/TempleUniswapV2Pair.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_token0", + "type": "address" + }, + { + "internalType": "address", + "name": "_token1", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "_reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "_reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "_blockTimestampLast", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "setRouter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "sync", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526001600d5534801561001557600080fd5b50604051612c46380380612c468339818101604052606081101561003857600080fd5b50805160208201516040928301519251919290914690806052612bf48239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b039485166001600160a01b031991821617909155600680549385169382169390931790925560078054919093169116179055612a91806101636000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637464fc3d116100f9578063bc25cf7711610097578063d505accf11610071578063d505accf146105e5578063dd62ed3e14610643578063f887ea401461067e578063fff6cae914610686576101c4565b8063bc25cf7714610577578063c0d78655146105aa578063d21220a7146105dd576101c4565b80638da5cb5b116100d35780638da5cb5b1461052657806395d89b411461052e578063a9059cbb14610536578063ba9a7a561461056f576101c4565b80637464fc3d1461049f5780637ecebe00146104a757806389afcb44146104da576101c4565b806330adf81f116101665780635909c0d5116101405780635909c0d5146104295780635a3d5493146104315780636a6278421461043957806370a082311461046c576101c4565b806330adf81f146103fb578063313ce567146104035780633644e51514610421576101c4565b8063095ea7b3116101a2578063095ea7b3146103205780630dfe16811461036d57806318160ddd1461039e57806323b872dd146103b8576101c4565b8063022c0d9f146101c957806306fdde03146102645780630902f1ac146102e1575b600080fd5b610262600480360360808110156101df57600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561022357600080fd5b82018360208201111561023557600080fd5b8035906020019184600183028401116401000000008311171561025757600080fd5b50909250905061068e565b005b61026c610de8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a657818101518382015260200161028e565b50505050905090810190601f1680156102d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e9610e21565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103596004803603604081101561033657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610e76565b604080519115158252519081900360200190f35b610375610e8d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103a6610ea9565b60408051918252519081900360200190f35b610359600480360360608110156103ce57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610eaf565b6103a6610f8e565b61040b610fb2565b6040805160ff9092168252519081900360200190f35b6103a6610fb7565b6103a6610fbd565b6103a6610fc3565b6103a66004803603602081101561044f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fc9565b6103a66004803603602081101561048257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611332565b6103a6611344565b6103a6600480360360208110156104bd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661134a565b61050d600480360360208110156104f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661135c565b6040805192835260208301919091528051918290030190f35b6103756117a9565b61026c6117c5565b6103596004803603604081101561054c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356117fe565b6103a661180b565b6102626004803603602081101561058d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611811565b610262600480360360208110156105c057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a07565b610375611ad4565b610262600480360360e08110156105fb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611af0565b6103a66004803603604081101561065957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dbc565b610375611dd9565b610262611df5565b600d546001146106ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d55841515806107125750600084115b610767576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806129a36025913960400191505060405180910390fd5b600c5473ffffffffffffffffffffffffffffffffffffffff1633146107ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6000806107f8610e21565b5091509150816dffffffffffffffffffffffffffff168710801561082b5750806dffffffffffffffffffffffffffff1686105b610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806129ec6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff9182169190811690891682148015906108e557508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b61095057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a1561096157610961828a8d611fdb565b891561097257610972818a8c611fdb565b8615610a54578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610a3b57600080fd5b505af1158015610a4f573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610ac057600080fd5b505afa158015610ad4573d6000803e3d6000fd5b505050506040513d6020811015610aea57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610b5c57600080fd5b505afa158015610b70573d6000803e3d6000fd5b505050506040513d6020811015610b8657600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610bb0576000610bc6565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610bea576000610c00565b89856dffffffffffffffffffffffffffff160383035b90506000821180610c115750600081115b610c66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806129c86024913960400191505060405180910390fd5b6000610c9a610c7c84600363ffffffff6121e816565b610c8e876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610cb2610c7c84600363ffffffff6121e816565b9050610cea620f4240610cde6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610cfa838363ffffffff6121e816565b1015610d6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610d75848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600d55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610e8333848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610f795773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610f47908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610f8484848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60095481565b600a5481565b6000600d5460011461103c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d8190558061104c610e21565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d60208110156110f057600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116957600080fd5b505afa15801561117d573d6000803e3d6000fd5b505050506040513d602081101561119357600080fd5b5051905060006111b9836dffffffffffffffffffffffffffff871663ffffffff61226e16565b905060006111dd836dffffffffffffffffffffffffffff871663ffffffff61226e16565b6000549091508061121a576112066103e8610c8e611201868663ffffffff6121e816565b6126ec565b975061121560006103e861273e565b611277565b6112746dffffffffffffffffffffffffffff881661123e858463ffffffff6121e816565b8161124557fe5b046dffffffffffffffffffffffffffff8816611267858563ffffffff6121e816565b8161126e57fe5b046127ee565b97505b600088116112d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612a356028913960400191505060405180910390fd5b6112da898961273e565b6112e6858589896122e0565b6040805184815260208101849052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600d55509395945050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600d546001146113d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d819055806113e0610e21565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561146257600080fd5b505afa158015611476573d6000803e3d6000fd5b505050506040513d602081101561148c57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561150057600080fd5b505afa158015611514573d6000803e3d6000fd5b505050506040513d602081101561152a57600080fd5b50513060009081526001602052604081205490549192509080611553838663ffffffff6121e816565b8161155a57fe5b0499508061156e838563ffffffff6121e816565b8161157557fe5b04985060008a1180156115885750600089115b6115dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612a0d6028913960400191505060405180910390fd5b6115e73083612806565b6115f2868c8c611fdb565b6115fd858c8b611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8816916370a08231916024808301926020929190829003018186803b15801561166957600080fd5b505afa15801561167d573d6000803e3d6000fd5b505050506040513d602081101561169357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8716916370a0823191602480820192602092909190829003018186803b15801561170557600080fd5b505afa158015611719573d6000803e3d6000fd5b505050506040513d602081101561172f57600080fd5b5051925061173f84848a8a6122e0565b604080518b8152602081018b9052815173ffffffffffffffffffffffffffffffffffffffff8e169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a350505050505050506001600d81905550915091565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610e8333848461260b565b6103e881565b600d5460011461188257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff948516949093169261195e9285928792611959926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d602081101561194b57600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516119fd9284928792611959926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b15801561192157600080fd5b50506001600d5550565b60055473ffffffffffffffffffffffffffffffffffffffff163314611a8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cc0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d3b57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611da657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611db189898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c5473ffffffffffffffffffffffffffffffffffffffff1681565b600d54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600d55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb866128cb565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff6128ef16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb876128cb565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff61293016565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000600382111561272f575080600160028204015b818110156127295780915060028182858161271857fe5b04018161272157fe5b049050612701565b50612739565b8115612739575060015b919050565b600054612751908263ffffffff61293016565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612789908263ffffffff61293016565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106127fd57816127ff565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461283c908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612876908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168161292857fe5b049392505050565b80820182811015610e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820c4f16b1ebb28cf8093b22eb4530289b1f015070b7c6376f8b1d0a137b402e4e264736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80637464fc3d116100f9578063bc25cf7711610097578063d505accf11610071578063d505accf146105e5578063dd62ed3e14610643578063f887ea401461067e578063fff6cae914610686576101c4565b8063bc25cf7714610577578063c0d78655146105aa578063d21220a7146105dd576101c4565b80638da5cb5b116100d35780638da5cb5b1461052657806395d89b411461052e578063a9059cbb14610536578063ba9a7a561461056f576101c4565b80637464fc3d1461049f5780637ecebe00146104a757806389afcb44146104da576101c4565b806330adf81f116101665780635909c0d5116101405780635909c0d5146104295780635a3d5493146104315780636a6278421461043957806370a082311461046c576101c4565b806330adf81f146103fb578063313ce567146104035780633644e51514610421576101c4565b8063095ea7b3116101a2578063095ea7b3146103205780630dfe16811461036d57806318160ddd1461039e57806323b872dd146103b8576101c4565b8063022c0d9f146101c957806306fdde03146102645780630902f1ac146102e1575b600080fd5b610262600480360360808110156101df57600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561022357600080fd5b82018360208201111561023557600080fd5b8035906020019184600183028401116401000000008311171561025757600080fd5b50909250905061068e565b005b61026c610de8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a657818101518382015260200161028e565b50505050905090810190601f1680156102d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e9610e21565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103596004803603604081101561033657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610e76565b604080519115158252519081900360200190f35b610375610e8d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103a6610ea9565b60408051918252519081900360200190f35b610359600480360360608110156103ce57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610eaf565b6103a6610f8e565b61040b610fb2565b6040805160ff9092168252519081900360200190f35b6103a6610fb7565b6103a6610fbd565b6103a6610fc3565b6103a66004803603602081101561044f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fc9565b6103a66004803603602081101561048257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611332565b6103a6611344565b6103a6600480360360208110156104bd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661134a565b61050d600480360360208110156104f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661135c565b6040805192835260208301919091528051918290030190f35b6103756117a9565b61026c6117c5565b6103596004803603604081101561054c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356117fe565b6103a661180b565b6102626004803603602081101561058d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611811565b610262600480360360208110156105c057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a07565b610375611ad4565b610262600480360360e08110156105fb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611af0565b6103a66004803603604081101561065957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dbc565b610375611dd9565b610262611df5565b600d546001146106ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d55841515806107125750600084115b610767576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806129a36025913960400191505060405180910390fd5b600c5473ffffffffffffffffffffffffffffffffffffffff1633146107ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6000806107f8610e21565b5091509150816dffffffffffffffffffffffffffff168710801561082b5750806dffffffffffffffffffffffffffff1686105b610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806129ec6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff9182169190811690891682148015906108e557508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b61095057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a1561096157610961828a8d611fdb565b891561097257610972818a8c611fdb565b8615610a54578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610a3b57600080fd5b505af1158015610a4f573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610ac057600080fd5b505afa158015610ad4573d6000803e3d6000fd5b505050506040513d6020811015610aea57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610b5c57600080fd5b505afa158015610b70573d6000803e3d6000fd5b505050506040513d6020811015610b8657600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610bb0576000610bc6565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610bea576000610c00565b89856dffffffffffffffffffffffffffff160383035b90506000821180610c115750600081115b610c66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806129c86024913960400191505060405180910390fd5b6000610c9a610c7c84600363ffffffff6121e816565b610c8e876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610cb2610c7c84600363ffffffff6121e816565b9050610cea620f4240610cde6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610cfa838363ffffffff6121e816565b1015610d6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610d75848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600d55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610e8333848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610f795773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610f47908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610f8484848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60095481565b600a5481565b6000600d5460011461103c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d8190558061104c610e21565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d60208110156110f057600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116957600080fd5b505afa15801561117d573d6000803e3d6000fd5b505050506040513d602081101561119357600080fd5b5051905060006111b9836dffffffffffffffffffffffffffff871663ffffffff61226e16565b905060006111dd836dffffffffffffffffffffffffffff871663ffffffff61226e16565b6000549091508061121a576112066103e8610c8e611201868663ffffffff6121e816565b6126ec565b975061121560006103e861273e565b611277565b6112746dffffffffffffffffffffffffffff881661123e858463ffffffff6121e816565b8161124557fe5b046dffffffffffffffffffffffffffff8816611267858563ffffffff6121e816565b8161126e57fe5b046127ee565b97505b600088116112d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612a356028913960400191505060405180910390fd5b6112da898961273e565b6112e6858589896122e0565b6040805184815260208101849052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600d55509395945050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600d546001146113d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d819055806113e0610e21565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561146257600080fd5b505afa158015611476573d6000803e3d6000fd5b505050506040513d602081101561148c57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561150057600080fd5b505afa158015611514573d6000803e3d6000fd5b505050506040513d602081101561152a57600080fd5b50513060009081526001602052604081205490549192509080611553838663ffffffff6121e816565b8161155a57fe5b0499508061156e838563ffffffff6121e816565b8161157557fe5b04985060008a1180156115885750600089115b6115dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612a0d6028913960400191505060405180910390fd5b6115e73083612806565b6115f2868c8c611fdb565b6115fd858c8b611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8816916370a08231916024808301926020929190829003018186803b15801561166957600080fd5b505afa15801561167d573d6000803e3d6000fd5b505050506040513d602081101561169357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8716916370a0823191602480820192602092909190829003018186803b15801561170557600080fd5b505afa158015611719573d6000803e3d6000fd5b505050506040513d602081101561172f57600080fd5b5051925061173f84848a8a6122e0565b604080518b8152602081018b9052815173ffffffffffffffffffffffffffffffffffffffff8e169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a350505050505050506001600d81905550915091565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610e8333848461260b565b6103e881565b600d5460011461188257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff948516949093169261195e9285928792611959926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d602081101561194b57600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516119fd9284928792611959926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b15801561192157600080fd5b50506001600d5550565b60055473ffffffffffffffffffffffffffffffffffffffff163314611a8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cc0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d3b57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611da657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611db189898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c5473ffffffffffffffffffffffffffffffffffffffff1681565b600d54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600d55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600d55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb866128cb565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff6128ef16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb876128cb565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff61293016565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000600382111561272f575080600160028204015b818110156127295780915060028182858161271857fe5b04018161272157fe5b049050612701565b50612739565b8115612739575060015b919050565b600054612751908263ffffffff61293016565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612789908263ffffffff61293016565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106127fd57816127ff565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461283c908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612876908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168161292857fe5b049392505050565b80820182811015610e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820c4f16b1ebb28cf8093b22eb4530289b1f015070b7c6376f8b1d0a137b402e4e264736f6c63430005100032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amm/TreasuryIV.sol/TreasuryIV.json b/apps/dapp/abi/contracts/amm/TreasuryIV.sol/TreasuryIV.json new file mode 100644 index 000000000..3cd6258e7 --- /dev/null +++ b/apps/dapp/abi/contracts/amm/TreasuryIV.sol/TreasuryIV.json @@ -0,0 +1,115 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TreasuryIV", + "sourceName": "contracts/amm/TreasuryIV.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "frax", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "temple", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "intrinsicValueRatio", + "outputs": [ + { + "internalType": "uint256", + "name": "frax", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "temple", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "frax", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "temple", + "type": "uint256" + } + ], + "name": "setIV", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405161042338038061042383398101604081905261002f91610096565b61003833610046565b6001919091556002556100ba565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100a957600080fd5b505080516020909101519092909150565b61035a806100c96000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80638da5cb5b116100505780638da5cb5b14610089578063a340bae2146100b6578063f2fde38b146100d957600080fd5b8063187c7ca21461006c578063715018a614610081575b600080fd5b61007f61007a3660046102c5565b6100ec565b005b61007f6100ff565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6001546002546100c4919082565b604080519283526020830191909152016100ad565b61007f6100e73660046102e7565b610113565b6100f46101cf565b600191909155600255565b6101076101cf565b6101116000610250565b565b61011b6101cf565b73ffffffffffffffffffffffffffffffffffffffff81166101c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101cc81610250565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101ba565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156102d857600080fd5b50508035926020909101359150565b6000602082840312156102f957600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461031d57600080fd5b939250505056fea2646970667358221220eaa89f28fa18e5c494581460700508bd516b68ddf3b9b8699ffcdf709bfe830064736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80638da5cb5b116100505780638da5cb5b14610089578063a340bae2146100b6578063f2fde38b146100d957600080fd5b8063187c7ca21461006c578063715018a614610081575b600080fd5b61007f61007a3660046102c5565b6100ec565b005b61007f6100ff565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6001546002546100c4919082565b604080519283526020830191909152016100ad565b61007f6100e73660046102e7565b610113565b6100f46101cf565b600191909155600255565b6101076101cf565b6101116000610250565b565b61011b6101cf565b73ffffffffffffffffffffffffffffffffffffffff81166101c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101cc81610250565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101ba565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156102d857600080fd5b50508035926020909101359150565b6000602082840312156102f957600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461031d57600080fd5b939250505056fea2646970667358221220eaa89f28fa18e5c494581460700508bd516b68ddf3b9b8699ffcdf709bfe830064736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/AuraStaking.sol/AuraStaking.json b/apps/dapp/abi/contracts/amo/AuraStaking.sol/AuraStaking.json new file mode 100644 index 000000000..2ee865538 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/AuraStaking.sol/AuraStaking.json @@ -0,0 +1,697 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AuraStaking", + "sourceName": "contracts/amo/AuraStaking.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "_bptToken", + "type": "address" + }, + { + "internalType": "contract IAuraBooster", + "name": "_booster", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_rewardTokens", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RecoveredToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "rewardTokens", + "type": "address[]" + } + ], + "name": "RewardTokensSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "pId", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "rewards", + "type": "address" + } + ], + "name": "SetAuraPoolInfo", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "SetRewardsRecipient", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "auraPoolInfo", + "outputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "rewards", + "type": "address" + }, + { + "internalType": "uint32", + "name": "pId", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "booster", + "outputs": [ + { + "internalType": "contract IAuraBooster", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bptToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "depositAndStake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "earned", + "outputs": [ + { + "internalType": "uint256", + "name": "earnedRewards", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "claimExtras", + "type": "bool" + } + ], + "name": "getReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isAuraShutdown", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "rewardTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_pId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "_rewards", + "type": "address" + } + ], + "name": "setAuraPoolInfo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_rewardTokens", + "type": "address[]" + } + ], + "name": "setRewardTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_recipient", + "type": "address" + } + ], + "name": "setRewardsRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "showPositions", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "staked", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "earned", + "type": "uint256" + } + ], + "internalType": "struct IAuraStaking.Position", + "name": "position", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stakedBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "claim", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "withdrawAllAndUnwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "claim", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "withdrawAndUnwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002aa638038062002aa68339810160408190526200003491620001d6565b84846001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b03199081166001600160a01b039485161790915560018054909116918316919091179055838116608052821660a05280516200010890600890602084019062000114565b50505050505062000302565b8280548282559060005260206000209081019282156200016c579160200282015b828111156200016c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000135565b506200017a9291506200017e565b5090565b5b808211156200017a57600081556001016200017f565b6001600160a01b0381168114620001ab57600080fd5b50565b8051620001bb8162000195565b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215620001ef57600080fd5b8551620001fc8162000195565b80955050602080870151620002118162000195565b6040880151909550620002248162000195565b6060880151909450620002378162000195565b60808801519093506001600160401b03808211156200025557600080fd5b818901915089601f8301126200026a57600080fd5b8151818111156200027f576200027f620001c0565b8060051b604051601f19603f83011681018181108582111715620002a757620002a7620001c0565b60405291825284820192508381018501918c831115620002c657600080fd5b938501935b82851015620002ef57620002df85620001ae565b84529385019392850192620002cb565b8096505050505050509295509295909350565b60805160a05161273f62000367600039600081816103bb01528181610e4001528181610ec201526112e60152600081816102da015281816106ac0152818161074801528181610bec01528181610d6601528181610e1e0152611665015261273f6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638112c4af116100f9578063c34c08e511610097578063d9a349c111610071578063d9a349c1146103e5578063da94e0f4146103f8578063daeccc7914610479578063ff2a7d30146104a757600080fd5b8063c34c08e514610396578063c6def076146103b6578063d6f19262146103dd57600080fd5b8063a4698feb116100d3578063a4698feb14610355578063a7229fd914610368578063ad7a672f1461037b578063bfccf0ec1461038357600080fd5b80638112c4af14610322578063928df23b1461032a5780639fb4a6111461033257600080fd5b806338a63183116101665780635b9f0016116101405780635b9f0016146102bf5780637b3a4759146102d55780637bb7bed1146102fc5780637bbf44271461030f57600080fd5b806338a63183146102545780633b912eda1461029957806359fe8539146102ac57600080fd5b80631810fe7f116101a25780631810fe7f146102045780631a54259c146102265780631f21140514610239578063201e81a81461024157600080fd5b8063032ef901146101c957806306b2426a146101de57806307f184f1146101f1575b600080fd5b6101dc6101d73660046120fd565b6104c7565b005b6101dc6101ec366004612143565b610576565b6101dc6101ff36600461217c565b610775565b6003546102119060ff1681565b60405190151581526020015b60405180910390f35b6101dc61023436600461217c565b6108ad565b6101dc61098a565b6101dc61024f366004612199565b610aa9565b6000546102749073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021d565b6101dc6102a736600461220e565b610b57565b6101dc6102ba366004612250565b610d94565b6102c7610f47565b60405190815260200161021d565b6102747f000000000000000000000000000000000000000000000000000000000000000081565b61027461030a366004612250565b610fe0565b6101dc61031d366004612269565b611017565b6101dc611154565b610211611294565b61033a61136f565b6040805182518152602092830151928101929092520161021d565b6101dc6103633660046120fd565b61139d565b6101dc6103763660046122a2565b611552565b6102c7611634565b6101dc6103913660046122e3565b6116f7565b6001546102749073ffffffffffffffffffffffffffffffffffffffff1681565b6102747f000000000000000000000000000000000000000000000000000000000000000081565b6102c76118fe565b6101dc6103f336600461217c565b611953565b6005546006546104409173ffffffffffffffffffffffffffffffffffffffff908116919081169074010000000000000000000000000000000000000000900463ffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815293909216602084015263ffffffff169082015260600161021d565b6102116104873660046123a0565b600260209081526000928352604080842090915290825290205460ff1681565b6007546102749073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610518576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6105a4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b6105da576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040517f49f039a2000000000000000000000000000000000000000000000000000000008152831515600482015273ffffffffffffffffffffffffffffffffffffffff909116906349f039a290602401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811615610771576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072c91906123d5565b905061076f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383611b5c565b505b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107c6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610813576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6108db336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b610911576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f122d4d57de43dcf4f26f6f4c52b422bcc5f2ec4e09f94356ec81b2c1b7359c459060200160405180910390a150565b60045473ffffffffffffffffffffffffffffffffffffffff1633146109db576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610a2c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610ad7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b610b0d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1960088383612052565b507f6ae694804b56cac0d9908312e31c459cdb238b304c50b38ae787b51aba3b717d8282604051610b4b9291906123ee565b60405180910390a15050565b610b85336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b610bbb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6c91906123d5565b90506000818510610c8657610c818286612478565b610c89565b60005b90508015610d30576006546040517fc32e720200000000000000000000000000000000000000000000000000000000815260048101839052851515602482015273ffffffffffffffffffffffffffffffffffffffff9091169063c32e7202906044016020604051808303816000875af1158015610d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2e919061248b565b505b73ffffffffffffffffffffffffffffffffffffffff831615610d8d57610d8d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168487611b5c565b5050505050565b610dc2336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b610df8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e00611294565b610f4457610e6573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611c30565b6006546040517f43a0d0660000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910463ffffffff16600482015260248101829052600160448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906343a0d066906064016020604051808303816000875af1158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610771919061248b565b50565b6006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a08231906024015b602060405180830381865afa158015610fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdb91906123d5565b905090565b60088181548110610ff057600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b611045336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b61107b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546005805473ffffffffffffffffffffffffffffffffffffffff8681167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909355851663ffffffff88167401000000000000000000000000000000000000000081029092167fffffffffffffffff0000000000000000000000000000000000000000000000009094169390931783179093556040805191825260208201929092527f8fe015ff86fc8c729ae9adf675a63baffda7a5194637e32a2d5a93693c698221910160405180910390a2505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146111aa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036111fb576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6006546040517f1526fe270000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910463ffffffff1660048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690631526fe279060240160c060405180830381865afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136691906124a8565b60a00151905090565b604080518082019091526000808252602082015261138b610f47565b81526113956118fe565b602082015290565b6006546040517f7050ccd9000000000000000000000000000000000000000000000000000000008152306004820152821515602482015273ffffffffffffffffffffffffffffffffffffffff90911690637050ccd9906044016020604051808303816000875af1158015611415573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611439919061248b565b5060075473ffffffffffffffffffffffffffffffffffffffff168015610771576008546000805b82811015610d8d576008818154811061147b5761147b61257a565b60009182526020822001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116935083906370a0823190602401602060405180830381865afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151891906123d5565b905080156115415761154173ffffffffffffffffffffffffffffffffffffffff84168683611b5c565b5061154b816125a9565b9050611460565b611580336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b6115b6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115d773ffffffffffffffffffffffffffffffffffffffff84168383611b5c565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f76fb5f9555be8170fef33d7b413bcbe740a6a96cd162b1234b602329b0c84e329060600160405180910390a1505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156116c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e591906123d5565b6116ed610f47565b610fdb91906125e1565b611725336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b61175b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166117a8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156118f6578484828181106117db576117db61257a565b9050604002018036038101906117f191906125f4565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556118ef816125a9565b90506117c1565b505050505050565b6006546040517e8cc26200000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff1690628cc26290602401610f9a565b611981336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b6119b7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611a04576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035460009060ff1615611aca575060005473ffffffffffffffffffffffffffffffffffffffff838116911614611b56565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480611b45575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b15611b5257506001611b56565b5060005b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261076f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611d2f565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cca91906123d5565b9050611d29847f095ea7b30000000000000000000000000000000000000000000000000000000085611cfc86866125e1565b60405173ffffffffffffffffffffffffffffffffffffffff90921660248301526044820152606401611bae565b50505050565b6000611d91826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611e439092919063ffffffff16565b9050805160001480611db2575080806020019051810190611db2919061248b565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6060611e528484600085611e5a565b949350505050565b606082471015611eec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611e3a565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611f15919061269c565b60006040518083038185875af1925050503d8060008114611f52576040519150601f19603f3d011682016040523d82523d6000602084013e611f57565b606091505b5091509150611f6887838387611f73565b979650505050505050565b606083156120095782516000036120025773ffffffffffffffffffffffffffffffffffffffff85163b612002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611e3a565b5081611e52565b611e52838381511561201e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a91906126b8565b8280548282559060005260206000209081019282156120ca579160200282015b828111156120ca5781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190612072565b506120d69291506120da565b5090565b5b808211156120d657600081556001016120db565b8015158114610f4457600080fd5b60006020828403121561210f57600080fd5b813561211a816120ef565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f4457600080fd5b6000806040838503121561215657600080fd5b8235612161816120ef565b9150602083013561217181612121565b809150509250929050565b60006020828403121561218e57600080fd5b813561211a81612121565b600080602083850312156121ac57600080fd5b823567ffffffffffffffff808211156121c457600080fd5b818501915085601f8301126121d857600080fd5b8135818111156121e757600080fd5b8660208260051b85010111156121fc57600080fd5b60209290920196919550909350505050565b60008060006060848603121561222357600080fd5b833592506020840135612235816120ef565b9150604084013561224581612121565b809150509250925092565b60006020828403121561226257600080fd5b5035919050565b60008060006060848603121561227e57600080fd5b833563ffffffff8116811461229257600080fd5b9250602084013561223581612121565b6000806000606084860312156122b757600080fd5b83356122c281612121565b925060208401356122d281612121565b929592945050506040919091013590565b6000806000604084860312156122f857600080fd5b833561230381612121565b9250602084013567ffffffffffffffff8082111561232057600080fd5b818601915086601f83011261233457600080fd5b81358181111561234357600080fd5b8760208260061b850101111561235857600080fd5b6020830194508093505050509250925092565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461239b57600080fd5b919050565b600080604083850312156123b357600080fd5b82356123be81612121565b91506123cc6020840161236b565b90509250929050565b6000602082840312156123e757600080fd5b5051919050565b60208082528181018390526000908460408401835b8681101561243e57823561241681612121565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101612403565b509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611b5657611b56612449565b60006020828403121561249d57600080fd5b815161211a816120ef565b600060c082840312156124ba57600080fd5b60405160c0810181811067ffffffffffffffff82111715612504577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825161251281612121565b8152602083015161252281612121565b6020820152604083015161253581612121565b6040820152606083015161254881612121565b6060820152608083015161255b81612121565b608082015260a083015161256e816120ef565b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036125da576125da612449565b5060010190565b80820180821115611b5657611b56612449565b60006040828403121561260657600080fd5b6040516040810181811067ffffffffffffffff82111715612650577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405261265c8361236b565b8152602083013561266c816120ef565b60208201529392505050565b60005b8381101561269357818101518382015260200161267b565b50506000910152565b600082516126ae818460208701612678565b9190910192915050565b60208152600082518060208401526126d7816040850160208701612678565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220f86fd28f382b7749a662549bb0a83b71953af0b8f5e32c69b14a785c8b95812f64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638112c4af116100f9578063c34c08e511610097578063d9a349c111610071578063d9a349c1146103e5578063da94e0f4146103f8578063daeccc7914610479578063ff2a7d30146104a757600080fd5b8063c34c08e514610396578063c6def076146103b6578063d6f19262146103dd57600080fd5b8063a4698feb116100d3578063a4698feb14610355578063a7229fd914610368578063ad7a672f1461037b578063bfccf0ec1461038357600080fd5b80638112c4af14610322578063928df23b1461032a5780639fb4a6111461033257600080fd5b806338a63183116101665780635b9f0016116101405780635b9f0016146102bf5780637b3a4759146102d55780637bb7bed1146102fc5780637bbf44271461030f57600080fd5b806338a63183146102545780633b912eda1461029957806359fe8539146102ac57600080fd5b80631810fe7f116101a25780631810fe7f146102045780631a54259c146102265780631f21140514610239578063201e81a81461024157600080fd5b8063032ef901146101c957806306b2426a146101de57806307f184f1146101f1575b600080fd5b6101dc6101d73660046120fd565b6104c7565b005b6101dc6101ec366004612143565b610576565b6101dc6101ff36600461217c565b610775565b6003546102119060ff1681565b60405190151581526020015b60405180910390f35b6101dc61023436600461217c565b6108ad565b6101dc61098a565b6101dc61024f366004612199565b610aa9565b6000546102749073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021d565b6101dc6102a736600461220e565b610b57565b6101dc6102ba366004612250565b610d94565b6102c7610f47565b60405190815260200161021d565b6102747f000000000000000000000000000000000000000000000000000000000000000081565b61027461030a366004612250565b610fe0565b6101dc61031d366004612269565b611017565b6101dc611154565b610211611294565b61033a61136f565b6040805182518152602092830151928101929092520161021d565b6101dc6103633660046120fd565b61139d565b6101dc6103763660046122a2565b611552565b6102c7611634565b6101dc6103913660046122e3565b6116f7565b6001546102749073ffffffffffffffffffffffffffffffffffffffff1681565b6102747f000000000000000000000000000000000000000000000000000000000000000081565b6102c76118fe565b6101dc6103f336600461217c565b611953565b6005546006546104409173ffffffffffffffffffffffffffffffffffffffff908116919081169074010000000000000000000000000000000000000000900463ffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815293909216602084015263ffffffff169082015260600161021d565b6102116104873660046123a0565b600260209081526000928352604080842090915290825290205460ff1681565b6007546102749073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610518576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6105a4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b6105da576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040517f49f039a2000000000000000000000000000000000000000000000000000000008152831515600482015273ffffffffffffffffffffffffffffffffffffffff909116906349f039a290602401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811615610771576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072c91906123d5565b905061076f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383611b5c565b505b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107c6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610813576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6108db336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b610911576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f122d4d57de43dcf4f26f6f4c52b422bcc5f2ec4e09f94356ec81b2c1b7359c459060200160405180910390a150565b60045473ffffffffffffffffffffffffffffffffffffffff1633146109db576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610a2c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610ad7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b610b0d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1960088383612052565b507f6ae694804b56cac0d9908312e31c459cdb238b304c50b38ae787b51aba3b717d8282604051610b4b9291906123ee565b60405180910390a15050565b610b85336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b610bbb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6c91906123d5565b90506000818510610c8657610c818286612478565b610c89565b60005b90508015610d30576006546040517fc32e720200000000000000000000000000000000000000000000000000000000815260048101839052851515602482015273ffffffffffffffffffffffffffffffffffffffff9091169063c32e7202906044016020604051808303816000875af1158015610d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2e919061248b565b505b73ffffffffffffffffffffffffffffffffffffffff831615610d8d57610d8d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168487611b5c565b5050505050565b610dc2336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b610df8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e00611294565b610f4457610e6573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083611c30565b6006546040517f43a0d0660000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910463ffffffff16600482015260248101829052600160448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906343a0d066906064016020604051808303816000875af1158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610771919061248b565b50565b6006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a08231906024015b602060405180830381865afa158015610fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdb91906123d5565b905090565b60088181548110610ff057600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b611045336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b61107b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546005805473ffffffffffffffffffffffffffffffffffffffff8681167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909355851663ffffffff88167401000000000000000000000000000000000000000081029092167fffffffffffffffff0000000000000000000000000000000000000000000000009094169390931783179093556040805191825260208201929092527f8fe015ff86fc8c729ae9adf675a63baffda7a5194637e32a2d5a93693c698221910160405180910390a2505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146111aa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036111fb576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6006546040517f1526fe270000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910463ffffffff1660048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690631526fe279060240160c060405180830381865afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136691906124a8565b60a00151905090565b604080518082019091526000808252602082015261138b610f47565b81526113956118fe565b602082015290565b6006546040517f7050ccd9000000000000000000000000000000000000000000000000000000008152306004820152821515602482015273ffffffffffffffffffffffffffffffffffffffff90911690637050ccd9906044016020604051808303816000875af1158015611415573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611439919061248b565b5060075473ffffffffffffffffffffffffffffffffffffffff168015610771576008546000805b82811015610d8d576008818154811061147b5761147b61257a565b60009182526020822001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116935083906370a0823190602401602060405180830381865afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151891906123d5565b905080156115415761154173ffffffffffffffffffffffffffffffffffffffff84168683611b5c565b5061154b816125a9565b9050611460565b611580336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b6115b6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115d773ffffffffffffffffffffffffffffffffffffffff84168383611b5c565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f76fb5f9555be8170fef33d7b413bcbe740a6a96cd162b1234b602329b0c84e329060600160405180910390a1505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156116c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e591906123d5565b6116ed610f47565b610fdb91906125e1565b611725336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b61175b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166117a8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156118f6578484828181106117db576117db61257a565b9050604002018036038101906117f191906125f4565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556118ef816125a9565b90506117c1565b505050505050565b6006546040517e8cc26200000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff1690628cc26290602401610f9a565b611981336000357fffffffff0000000000000000000000000000000000000000000000000000000016611a98565b6119b7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611a04576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035460009060ff1615611aca575060005473ffffffffffffffffffffffffffffffffffffffff838116911614611b56565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480611b45575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b15611b5257506001611b56565b5060005b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261076f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611d2f565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cca91906123d5565b9050611d29847f095ea7b30000000000000000000000000000000000000000000000000000000085611cfc86866125e1565b60405173ffffffffffffffffffffffffffffffffffffffff90921660248301526044820152606401611bae565b50505050565b6000611d91826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611e439092919063ffffffff16565b9050805160001480611db2575080806020019051810190611db2919061248b565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6060611e528484600085611e5a565b949350505050565b606082471015611eec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611e3a565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611f15919061269c565b60006040518083038185875af1925050503d8060008114611f52576040519150601f19603f3d011682016040523d82523d6000602084013e611f57565b606091505b5091509150611f6887838387611f73565b979650505050505050565b606083156120095782516000036120025773ffffffffffffffffffffffffffffffffffffffff85163b612002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611e3a565b5081611e52565b611e52838381511561201e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a91906126b8565b8280548282559060005260206000209081019282156120ca579160200282015b828111156120ca5781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190612072565b506120d69291506120da565b5090565b5b808211156120d657600081556001016120db565b8015158114610f4457600080fd5b60006020828403121561210f57600080fd5b813561211a816120ef565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f4457600080fd5b6000806040838503121561215657600080fd5b8235612161816120ef565b9150602083013561217181612121565b809150509250929050565b60006020828403121561218e57600080fd5b813561211a81612121565b600080602083850312156121ac57600080fd5b823567ffffffffffffffff808211156121c457600080fd5b818501915085601f8301126121d857600080fd5b8135818111156121e757600080fd5b8660208260051b85010111156121fc57600080fd5b60209290920196919550909350505050565b60008060006060848603121561222357600080fd5b833592506020840135612235816120ef565b9150604084013561224581612121565b809150509250925092565b60006020828403121561226257600080fd5b5035919050565b60008060006060848603121561227e57600080fd5b833563ffffffff8116811461229257600080fd5b9250602084013561223581612121565b6000806000606084860312156122b757600080fd5b83356122c281612121565b925060208401356122d281612121565b929592945050506040919091013590565b6000806000604084860312156122f857600080fd5b833561230381612121565b9250602084013567ffffffffffffffff8082111561232057600080fd5b818601915086601f83011261233457600080fd5b81358181111561234357600080fd5b8760208260061b850101111561235857600080fd5b6020830194508093505050509250925092565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461239b57600080fd5b919050565b600080604083850312156123b357600080fd5b82356123be81612121565b91506123cc6020840161236b565b90509250929050565b6000602082840312156123e757600080fd5b5051919050565b60208082528181018390526000908460408401835b8681101561243e57823561241681612121565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101612403565b509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611b5657611b56612449565b60006020828403121561249d57600080fd5b815161211a816120ef565b600060c082840312156124ba57600080fd5b60405160c0810181811067ffffffffffffffff82111715612504577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825161251281612121565b8152602083015161252281612121565b6020820152604083015161253581612121565b6040820152606083015161254881612121565b6060820152608083015161255b81612121565b608082015260a083015161256e816120ef565b60a08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036125da576125da612449565b5060010190565b80820180821115611b5657611b56612449565b60006040828403121561260657600080fd5b6040516040810181811067ffffffffffffffff82111715612650577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405261265c8361236b565b8152602083013561266c816120ef565b60208201529392505050565b60005b8381101561269357818101518382015260200161267b565b50506000910152565b600082516126ae818460208701612678565b9190910192915050565b60208152600082518060208401526126d7816040850160208701612678565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220f86fd28f382b7749a662549bb0a83b71953af0b8f5e32c69b14a785c8b95812f64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/Ramos.sol/Ramos.json b/apps/dapp/abi/contracts/amo/Ramos.sol/Ramos.json new file mode 100644 index 000000000..6d3e4c8fc --- /dev/null +++ b/apps/dapp/abi/contracts/amo/Ramos.sol/Ramos.json @@ -0,0 +1,1462 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Ramos", + "sourceName": "contracts/amo/Ramos.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "address", + "name": "_balancerVault", + "type": "address" + }, + { + "internalType": "address", + "name": "_protocolToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_quoteToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_bptToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_amoStaking", + "type": "address" + }, + { + "internalType": "uint64", + "name": "_protocolTokenIndexInPool", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "_balancerPoolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_feeCollector", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_maxRebalanceFee", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "name": "AboveCappedAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "InvalidBPSValue", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBalancerVaultRequest", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptMaxAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableMaxAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "templeMaxAmount", + "type": "uint256" + } + ], + "name": "InvalidMaxAmounts", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "inputs": [], + "name": "NotEnoughCooldown", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroSwapLimit", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptAmount", + "type": "uint256" + } + ], + "name": "DepositAndStakeBptTokens", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "name": "FeeCollectorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenAdded", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenAdded", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptReceived", + "type": "uint256" + } + ], + "name": "LiquidityAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenReceived", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenReceived", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptRemoved", + "type": "uint256" + } + ], + "name": "LiquidityRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenRepaid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenFee", + "type": "uint256" + } + ], + "name": "RebalanceDownExit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptTokensStaked", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenFee", + "type": "uint256" + } + ], + "name": "RebalanceDownJoin", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "rebalanceJoinFeeBps", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rebalanceExitFeeBps", + "type": "uint256" + } + ], + "name": "RebalanceFeesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenRepaid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenFee", + "type": "uint256" + } + ], + "name": "RebalanceUpExit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptTokensStaked", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenFee", + "type": "uint256" + } + ], + "name": "RebalanceUpJoin", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RecoveredToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "cooldownSecs", + "type": "uint64" + } + ], + "name": "SetCooldown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptMaxAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenMaxAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenMaxAmount", + "type": "uint256" + } + ], + "name": "SetMaxRebalanceAmounts", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "poolHelper", + "type": "address" + } + ], + "name": "SetPoolHelper", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "deltaBps", + "type": "uint64" + } + ], + "name": "SetPostRebalanceDelta", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "belowTpi", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "aboveTpi", + "type": "uint64" + } + ], + "name": "SetRebalancePercentageBounds", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + } + ], + "name": "TokenVaultSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tpiOracle", + "type": "address" + } + ], + "name": "TpiOracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "BPS_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.JoinPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "quoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bptTokensStaked", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "amoStaking", + "outputs": [ + { + "internalType": "contract IAuraStaking", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerPoolId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerVault", + "outputs": [ + { + "internalType": "contract IBalancerVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bptToken", + "outputs": [ + { + "internalType": "contract IBalancerBptToken", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cooldownSecs", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "useContractBalance", + "type": "bool" + } + ], + "name": "depositAndStakeBptTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastRebalanceTimeSecs", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxRebalanceAmounts", + "outputs": [ + { + "internalType": "uint256", + "name": "bpt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quoteToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolToken", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxRebalanceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolHelper", + "outputs": [ + { + "internalType": "contract IBalancerPoolHelper", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "positions", + "outputs": [ + { + "internalType": "uint256", + "name": "bptBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolTokenBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quoteTokenBalance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "postRebalanceDelta", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "protocolToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolTokenBalancerPoolIndex", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quoteToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minQuoteTokenAmountOut", + "type": "uint256" + } + ], + "name": "rebalanceDownExit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "protocolTokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBptOut", + "type": "uint256" + } + ], + "name": "rebalanceDownJoin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rebalanceFees", + "outputs": [ + { + "internalType": "uint128", + "name": "rebalanceJoinFeeBps", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "rebalanceExitFeeBps", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rebalancePercentageBoundLow", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rebalancePercentageBoundUp", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minProtocolTokenOut", + "type": "uint256" + } + ], + "name": "rebalanceUpExit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "quoteTokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBptOut", + "type": "uint256" + } + ], + "name": "rebalanceUpJoin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.ExitPoolRequest", + "name": "request", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "bptIn", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "quoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolTokenAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "_seconds", + "type": "uint64" + } + ], + "name": "setCoolDown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_feeCollector", + "type": "address" + } + ], + "name": "setFeeCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptMaxAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quoteTokenMaxAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolTokenMaxAmount", + "type": "uint256" + } + ], + "name": "setMaxRebalanceAmounts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_poolHelper", + "type": "address" + } + ], + "name": "setPoolHelper", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "deltaBps", + "type": "uint64" + } + ], + "name": "setPostRebalanceDelta", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "rebalanceJoinFeeBps", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalanceExitFeeBps", + "type": "uint256" + } + ], + "name": "setRebalanceFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "belowTpi", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "aboveTpi", + "type": "uint64" + } + ], + "name": "setRebalancePercentageBounds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "vault", + "type": "address" + } + ], + "name": "setTokenVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newTpiOracle", + "type": "address" + } + ], + "name": "setTpiOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "tokenVault", + "outputs": [ + { + "internalType": "contract IRamosTokenVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tpiOracle", + "outputs": [ + { + "internalType": "contract ITreasuryPriceIndexOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryPriceIndex", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101806040523480156200001257600080fd5b5060405162005da138038062005da18339810160408190526200003591620001ae565b8a8a6001600160a01b0382166200005f5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000875760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000ba5760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b03199182161790915560018054928416929091169190911790556004805460ff60a01b1916905589811660805288811660e0528781166101005286811660a05285811660c0526001600160401b03851661014052610120849052600c80549184166801000000000000000002600160401b600160e01b03199092169190911790556127108111156200017c576040516378027fe560e11b81526004810182905260240160405180910390fd5b61016052506200028e98505050505050505050565b80516001600160a01b0381168114620001a957600080fd5b919050565b60008060008060008060008060008060006101608c8e031215620001d157600080fd5b620001dc8c62000191565b9a50620001ec60208d0162000191565b9950620001fc60408d0162000191565b98506200020c60608d0162000191565b97506200021c60808d0162000191565b96506200022c60a08d0162000191565b95506200023c60c08d0162000191565b60e08d01519095506001600160401b03811681146200025a57600080fd5b6101008d01519094509250620002746101208d0162000191565b91506101408c015190509295989b509295989b9093969950565b60805160a05160c05160e051610100516101205161014051610160516159256200047c6000396000818161073a0152818161363a01526136940152600081816104c201528181610d78015281816115f9015281816125cc0152818161383d015261430c01526000818161083f0152818161315a0152613d2601526000818161049b015281816116b30152818161178c015281816119f201528181611b0801528181611b4a015281816124d40152818161253a0152818161267e01528181612fd5015281816132b401528181613acd01528181613b5e0152613bc001526000818161046c01528181610e2b01528181610f04015281816119b001528181611a6501528181611aa701528181612f0c015281816131e901528181613a16015281816141b101528181614217015261434801526000818161086601528181610cc20152818161154001528181612771015281816127c5015281816129260152818161297a01528181612abb0152818161307f01528181613ec20152613f1601526000818161063f0152818161274f015281816128c20152818161290401528181612a2401528181613c3901528181613db60152613ea00152600081816103dc0152818161312b01528181613a3a01528181613aa201528181613b8001528181613be20152613cf901526159256000f3fe608060405234801561001057600080fd5b506004361061034c5760003560e01c80637cdb6e23116101bd578063c34c08e5116100f9578063e3da3d59116100a2578063e68d11af1161007c578063e68d11af146108a4578063e779ae7e14610901578063eed2a10014610914578063f024f0181461092757600080fd5b8063e3da3d5914610861578063e41de31314610888578063e45487851461089157600080fd5b8063d9a349c1116100d3578063d9a349c1146107f9578063daeccc791461080c578063dbbb64b91461083a57600080fd5b8063c34c08e514610785578063c415b95c146107a5578063d3a6f472146107d157600080fd5b8063a7229fd911610166578063b3e88f4911610140578063b3e88f4914610721578063b95327ec14610735578063ba5b79821461076a578063bfccf0ec1461077257600080fd5b8063a7229fd9146106e8578063b1bbf68b146106fb578063b34ea1e81461070e57600080fd5b80638456cb59116101975780638456cb59146106a85780639ed384f1146106b0578063a42dce80146106d557600080fd5b80637cdb6e23146106615780637f350917146106745780638112c4af146106a057600080fd5b806328d6b3a61161028c57806355ac8d30116102355780636497a8a01161020f5780636497a8a014610601578063754da37614610614578063799cebd1146106275780637b3a47591461063a57600080fd5b806355ac8d301461059e5780635bc789d9146105be5780635c975abb146105de57600080fd5b806338a631831161026657806338a631831461054a5780633f4ba83a1461056a5780634bb829361461057257600080fd5b806328d6b3a6146105115780632cd35475146105245780633682b90e1461053757600080fd5b80631810fe7f116102f95780631f211405116102d35780631f2114051461048e578063217a4b7014610496578063279af80a146104bd578063285718dc146104e457600080fd5b80631810fe7f1461043657806318769228146104535780631a465fe11461046757600080fd5b806314c799531161032a57806314c79953146103c3578063158274a5146103d75780631752bbf51461042357600080fd5b8063032ef9011461035157806307f184f1146103665780630b521dd014610379575b600080fd5b61036461035f366004614f4c565b61093a565b005b610364610374366004614f94565b6109e9565b6007546103a59074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b600c546103a59067ffffffffffffffff1681565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ba565b610364610431366004614faf565b610b21565b6003546104439060ff1681565b60405190151581526020016103ba565b6006546103a59067ffffffffffffffff1681565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b610364611012565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6103a57f000000000000000000000000000000000000000000000000000000000000000081565b600954600a54600b546104f692919083565b604080519384526020840192909252908201526060016103ba565b61036461051f366004614fe9565b611131565b610364610532366004614f94565b6112c1565b610364610545366004614faf565b61139f565b6000546103fe9073ffffffffffffffffffffffffffffffffffffffff1681565b610364611864565b6006546103fe9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6005546103fe9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546103fe9073ffffffffffffffffffffffffffffffffffffffff1681565b60045474010000000000000000000000000000000000000000900460ff16610443565b61036461060f366004614f94565b6118d2565b610364610622366004614f94565b611b95565b61036461063536600461501c565b611c8d565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b61036461066f366004615048565b611da3565b6005546103a59074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b610364611e6e565b610364611fae565b6106b861201a565b6040516bffffffffffffffffffffffff90911681526020016103ba565b6103646106e3366004614f94565b6120b2565b6103646106f6366004615063565b6121d9565b610364610709366004614faf565b6122b3565b61036461071c36600461509f565b61283f565b6008546103a59067ffffffffffffffff1681565b61075c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016103ba565b6104f6612a1c565b6103646107803660046150cf565b612c19565b6001546103fe9073ffffffffffffffffffffffffffffffffffffffff1681565b600c546103fe9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6107e46107df36600461541a565b612e18565b604080519283526020830191909152016103ba565b610364610807366004614f94565b613496565b61044361081a36600461548f565b600260209081526000928352604080842090915290825290205460ff1681565b61075c7f000000000000000000000000000000000000000000000000000000000000000081565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b61075c61271081565b61036461089f366004614faf565b6135db565b600d546108d8906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016103ba565b6104f661090f3660046154b9565b61376d565b610364610922366004614faf565b613f90565b610364610935366004615048565b6143f5565b60005473ffffffffffffffffffffffffffffffffffffffff16331461098b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a3a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a87576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610b4f336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b610b85576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b8d6145e9565b6006546005544291610bc59167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661551d565b67ffffffffffffffff161115610c07576040517fb0f1cfa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c17818360096000015461466e565b6005805467ffffffffffffffff421674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff821681179092556040517f3b912eda000000000000000000000000000000000000000000000000000000008152600481018590526000602482015273ffffffffffffffffffffffffffffffffffffffff9283169183169190911760448201819052917f00000000000000000000000000000000000000000000000000000000000000001690633b912eda90606401600060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b5050600754600854600c546000945073ffffffffffffffffffffffffffffffffffffffff86169350637a23bf60928892889267ffffffffffffffff7401000000000000000000000000000000000000000090930483169291821691167f0000000000000000000000000000000000000000000000000000000000000000610d9f61201a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b1681526004810197909752602487019590955267ffffffffffffffff93841660448701529183166064860152821660848501521660a48301526bffffffffffffffffffffffff1660c482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660e4820152610104016020604051808303816000875af1158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190615545565b600d5490915060009061271090610ed49070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168461555e565b610ede9190615575565b90508015610f3957600c54610f399073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169168010000000000000000900416836146ea565b604080518681529282900360208401819052908301829052917f1c124aae7e7836fe1121102073d45015e58284f5402396338cb69b785b87cccb9060600160405180910390a1811561100b576007546040517f082f21eb0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063082f21eb906024015b600060405180830381600087803b158015610ff257600080fd5b505af1158015611006573d6000803e3d6000fd5b505050505b5050505050565b60045473ffffffffffffffffffffffffffffffffffffffff163314611063576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036110b4576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b61115f336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611195576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108267ffffffffffffffff1611806111ba57506127108167ffffffffffffffff16115b15611202576040517ff004ffca00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526024015b60405180910390fd5b600780547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff85811691820292909217909255600880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001691841691821790556040805192835260208301919091527fc38619f7264334ffff4bcc232b63a1ede5c74bb55961a9135cbc47c477d576a491015b60405180910390a15050565b6112ef336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611325576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f972c14f508b20e9af2fa5095b28a6f846d93361d88154e9392b99cfb5df89165906020015b60405180910390a150565b6113cd336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611403576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61140b6145e9565b60065460055442916114439167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661551d565b67ffffffffffffffff161115611485576040517fb0f1cfa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611495818360096000015461466e565b6005805467ffffffffffffffff421674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff821681179092556040517f3b912eda000000000000000000000000000000000000000000000000000000008152600481018590526000602482015273ffffffffffffffffffffffffffffffffffffffff9283169183169190911760448201819052917f00000000000000000000000000000000000000000000000000000000000000001690633b912eda90606401600060405180830381600087803b15801561158457600080fd5b505af1158015611598573d6000803e3d6000fd5b5050600754600854600c546000945073ffffffffffffffffffffffffffffffffffffffff86169350637a23bf60928892889267ffffffffffffffff74010000000000000000000000000000000000000000909304831692918216911661161f7f000000000000000000000000000000000000000000000000000000000000000060016155b0565b61162761201a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b1681526004810197909752602487019590955267ffffffffffffffff93841660448701529183166064860152821660848501521660a48301526bffffffffffffffffffffffff1660c482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660e4820152610104016020604051808303816000875af11580156116fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171f9190615545565b600d549091506000906127109061175c9070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168461555e565b6117669190615575565b905080156117c157600c546117c19073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169168010000000000000000900416836146ea565b604080518681529282900360208401819052908301829052917f329e87e15e4f179a2f657ed4d03f58c1a6c480b4f3c232ada9bb0c9a1919a3719060600160405180910390a1811561100b576007546040517fa2736b820000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063a2736b8290602401610fd8565b611892336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b6118c8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118d06147be565b565b611900336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611936576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f556e2aaa423a3aa1275f9b8e9646d73e5c7d316d10d383ed3b52ef18851e900990600090a260075473ffffffffffffffffffffffffffffffffffffffff168015611a1a576119d873ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682600061483b565b611a1a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682600061483b565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84811691909117909155611a8d907f00000000000000000000000000000000000000000000000000000000000000001683600061483b565b611aee73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6149bd565b611b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683600061483b565b611b9173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6149bd565b5050565b611bc3336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611bf9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f73242cc206066336b9be50f9cf5905a0f722ce90450a2948f6b14d664a6ff0a090600090a26006805473ffffffffffffffffffffffffffffffffffffffff90921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055565b611cbb336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611cf1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821580611cfc575081155b80611d05575080155b15611d4d576040517f72fcc23a0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290526064016111f9565b6009839055600a829055600b81905560408051848152602081018490529081018290527fb3cef6fd6ea3d0d138818cf3f864db386999cdc2d3b12836b3928de8be1df1b7906060015b60405180910390a1505050565b611dd1336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611e07576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f17c8a108c2eec39ecb21faf87558faedcf8b370c58e113e8aff0d52ff959761690602001611394565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611ec4576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611f15576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b611fdc336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b612012576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118d0614abc565b6000600660089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ed384f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad91906155d1565b905090565b600c5468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461210f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661215c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040517f12e1d17016b94668449f97876f4a8d5cc2c19f314db337418894734037cc19d490600090a250565b612207336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b61223d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61225e73ffffffffffffffffffffffffffffffffffffffff841683836146ea565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f76fb5f9555be8170fef33d7b413bcbe740a6a96cd162b1234b602329b0c84e3290606001611d96565b6122e1336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b612317576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61231f6145e9565b60065460055442916123579167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661551d565b67ffffffffffffffff161115612399576040517fb0f1cfa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123a9818360096001015461466e565b600580547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004267ffffffffffffffff16021790556007546040517fb926f2c20000000000000000000000000000000000000000000000000000000081526004810184905230602482015273ffffffffffffffffffffffffffffffffffffffff9091169063b926f2c290604401600060405180830381600087803b15801561246657600080fd5b505af115801561247a573d6000803e3d6000fd5b5050600d546000925061271091506124a4906fffffffffffffffffffffffffffffffff168561555e565b6124ae9190615575565b9050801561250957600c546125099073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169168010000000000000000900416836146ea565b600061251582856155ff565b60055490915073ffffffffffffffffffffffffffffffffffffffff90811690612561907f00000000000000000000000000000000000000000000000000000000000000001682846146ea565b60085460075460009173ffffffffffffffffffffffffffffffffffffffff84169163e3da5a29918691899167ffffffffffffffff90811691740100000000000000000000000000000000000000009004166125ba61201a565b600c5467ffffffffffffffff166125f27f000000000000000000000000000000000000000000000000000000000000000060016155b0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b1681526004810197909752602487019590955267ffffffffffffffff938416604487015291831660648601526bffffffffffffffffffffffff166084850152811660a48401521660c482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660e4820152610104016020604051808303816000875af11580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea9190615545565b60408051888152602081018390529081018690529091507f5544c820a1ddc9773cd4bc0d75fc753e235b1c6d405eb33760f5dc71810fdb44906060015b60405180910390a180156128375761279673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836146ea565b6040517f59fe8539000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906359fe853990602401600060405180830381600087803b15801561281e57600080fd5b505af1158015612832573d6000803e3d6000fd5b505050505b505050505050565b61286d336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b6128a3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806128ea576128ea73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333085614b2b565b61294b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846146ea565b6040517f59fe8539000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906359fe853990602401600060405180830381600087803b1580156129d357600080fd5b505af11580156129e7573d6000803e3d6000fd5b505050507f5eb7e3bda527afe73ef6c82fbb82cf89d964c0b3bd7fa27af604e155679a563a826040516112b591815260200190565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663876f303b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab19190615545565b90508015612c13577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad7a672f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b489190615545565b600554604080517f0c39bcfd0000000000000000000000000000000000000000000000000000000081528151939750600093849373ffffffffffffffffffffffffffffffffffffffff1692630c39bcfd92600480820193918290030181865afa158015612bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdd9190615612565b909250905082612bed878461555e565b612bf79190615575565b945082612c04878361555e565b612c0e9190615575565b935050505b50909192565b612c47336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b612c7d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316612cca576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b8281101561283757848482818110612cfd57612cfd615636565b905060400201803603810190612d139190615665565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055612e11816156c2565b9050612ce3565b600080612e49336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b612e7f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602084015151845151141580612e985750835151600214155b80612ea4575083606001515b15612edb576040517f1a73fb4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c9190615545565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561301c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130409190615545565b6040517f3b912eda00000000000000000000000000000000000000000000000000000000815260048101879052600060248201523060448201529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633b912eda90606401600060405180830381600087803b1580156130d857600080fd5b505af11580156130ec573d6000803e3d6000fd5b50506040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250638bdb39139150613188907f000000000000000000000000000000000000000000000000000000000000000090309081908c90600401615847565b600060405180830381600087803b1580156131a257600080fd5b505af11580156131b6573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528492507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691506370a0823190602401602060405180830381865afa158015613246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326a9190615545565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529190039350819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156132fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331f9190615545565b600754919003945073ffffffffffffffffffffffffffffffffffffffff1683156133c4576040517f082f21eb0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff82169063082f21eb90602401600060405180830381600087803b1580156133ab57600080fd5b505af11580156133bf573d6000803e3d6000fd5b505050505b841561344b576040517fa2736b820000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff82169063a2736b8290602401600060405180830381600087803b15801561343257600080fd5b505af1158015613446573d6000803e3d6000fd5b505050505b60408051868152602081018690529081018790527f0bb89aa54ed6940a7e7167bd262b2400d63945045ceff1a52a05f2601ed215f19060600160405180910390a15050509250929050565b6134c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b6134fa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116613547576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600c5468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314613638576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000821115613692576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008111156136ec576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051838152602081018390527f96bb4d72e07b4a4120c9841de5d46f114a409d85a997deebb2f93c81c16a9f10910160405180910390a1604080518082019091526fffffffffffffffffffffffffffffffff92831680825291909216602090920182905270010000000000000000000000000000000090910217600d55565b60008060006137a0336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b6137d6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020840151518451511415806137ef5750835151600214155b806137fb575083606001515b15613832576040517f1a73fb4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156138a557836020015160018151811061387957613879615636565b6020026020010151846020015160008151811061389857613898615636565b60200260200101516138e4565b83602001516000815181106138bc576138bc615636565b602002602001015184602001516001815181106138db576138db615636565b60200260200101515b6007546040517f27a06a290000000000000000000000000000000000000000000000000000000081526004810184905230602482015291955091935073ffffffffffffffffffffffffffffffffffffffff9091169081906327a06a2990604401600060405180830381600087803b15801561395e57600080fd5b505af1158015613972573d6000803e3d6000fd5b50506040517fb926f2c20000000000000000000000000000000000000000000000000000000081526004810187905230602482015273ffffffffffffffffffffffffffffffffffffffff8416925063b926f2c29150604401600060405180830381600087803b1580156139e457600080fd5b505af11580156139f8573d6000803e3d6000fd5b50613a5f92505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690507f0000000000000000000000000000000000000000000000000000000000000000856149bd565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063dd62ed3e90604401602060405180830381865afa158015613b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3a9190615545565b905084811015613c0757613ba673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000600061483b565b613c0773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000876149bd565b506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015613c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb99190615545565b6040517fb95cac2800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b95cac2890613d54907f000000000000000000000000000000000000000000000000000000000000000090309081908c90600401615847565b600060405180830381600087803b158015613d6e57600080fd5b505af1158015613d82573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691506370a0823190602401602060405180830381865afa158015613e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e379190615545565b60408051888152602081018890529390910390830181905293507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be391606001905060405180910390a18115613f8857613ee773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846146ea565b6040517f59fe8539000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906359fe853990602401600060405180830381600087803b158015613f6f57600080fd5b505af1158015613f83573d6000803e3d6000fd5b505050505b509193909250565b613fbe336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b613ff4576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613ffc6145e9565b60065460055442916140349167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661551d565b67ffffffffffffffff161115614076576040517fb0f1cfa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614086818360096002015461466e565b600580547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004267ffffffffffffffff16021790556007546040517f27a06a290000000000000000000000000000000000000000000000000000000081526004810184905230602482015273ffffffffffffffffffffffffffffffffffffffff909116906327a06a2990604401600060405180830381600087803b15801561414357600080fd5b505af1158015614157573d6000803e3d6000fd5b5050600d54600092506127109150614181906fffffffffffffffffffffffffffffffff168561555e565b61418b9190615575565b905080156141e657600c546141e69073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169168010000000000000000900416836146ea565b60006141f282856155ff565b60055490915073ffffffffffffffffffffffffffffffffffffffff9081169061423e907f00000000000000000000000000000000000000000000000000000000000000001682846146ea565b60085460075460009173ffffffffffffffffffffffffffffffffffffffff84169163e3da5a29918691899167ffffffffffffffff908116917401000000000000000000000000000000000000000090041661429761201a565b600c5460405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526004810196909652602486019490945267ffffffffffffffff928316604486015290821660648501526bffffffffffffffffffffffff16608484015290811660a48301527f00000000000000000000000000000000000000000000000000000000000000001660c482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660e4820152610104016020604051808303816000875af1158015614390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143b49190615545565b60408051888152602081018390529081018690529091507fa5d208afbbad321423296e33c74819e11fdb1b9ccf684d6876ede2d160ca4d1c90606001612727565b614423336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b614459576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108167ffffffffffffffff16118061447b575067ffffffffffffffff8116155b156144be576040517ff004ffca00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024016111f9565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f630679cd3f880ff6c420f020b88cd88a6bb95573d20208862fed06f5c5fd6bce90602001611394565b60035460009060ff1615614557575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146145e3565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806145d2575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156145df575060016145e3565b5060005b92915050565b60045474010000000000000000000000000000000000000000900460ff16156118d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016111f9565b826000036146a8576040517f0ae375bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808211156146e5576040517f1beda7ba000000000000000000000000000000000000000000000000000000008152600481018390526024016111f9565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526146e59084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614b89565b6147c6614c98565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b8015806148db57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156148b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148d99190615545565b155b614967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016111f9565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526146e59084907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161473c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015614a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a579190615545565b9050614ab6847f095ea7b30000000000000000000000000000000000000000000000000000000085614a898686615890565b60405173ffffffffffffffffffffffffffffffffffffffff9092166024830152604482015260640161473c565b50505050565b614ac46145e9565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586148113390565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052614ab69085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161473c565b6000614beb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16614d1c9092919063ffffffff16565b9050805160001480614c0c575080806020019051810190614c0c91906158a3565b6146e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016111f9565b60045474010000000000000000000000000000000000000000900460ff166118d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016111f9565b6060614d2b8484600085614d33565b949350505050565b606082471015614dc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016111f9565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051614dee91906158c0565b60006040518083038185875af1925050503d8060008114614e2b576040519150601f19603f3d011682016040523d82523d6000602084013e614e30565b606091505b5091509150614e4187838387614e4c565b979650505050505050565b60608315614ee2578251600003614edb5773ffffffffffffffffffffffffffffffffffffffff85163b614edb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016111f9565b5081614d2b565b614d2b8383815115614ef75781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f991906158dc565b8015158114614f3957600080fd5b50565b8035614f4781614f2b565b919050565b600060208284031215614f5e57600080fd5b8135614f6981614f2b565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114614f4757600080fd5b600060208284031215614fa657600080fd5b614f6982614f70565b60008060408385031215614fc257600080fd5b50508035926020909101359150565b803567ffffffffffffffff81168114614f4757600080fd5b60008060408385031215614ffc57600080fd5b61500583614fd1565b915061501360208401614fd1565b90509250929050565b60008060006060848603121561503157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561505a57600080fd5b614f6982614fd1565b60008060006060848603121561507857600080fd5b61508184614f70565b925061508f60208501614f70565b9150604084013590509250925092565b600080604083850312156150b257600080fd5b8235915060208301356150c481614f2b565b809150509250929050565b6000806000604084860312156150e457600080fd5b6150ed84614f70565b9250602084013567ffffffffffffffff8082111561510a57600080fd5b818601915086601f83011261511e57600080fd5b81358181111561512d57600080fd5b8760208260061b850101111561514257600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156151a7576151a7615155565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156151f4576151f4615155565b604052919050565b600067ffffffffffffffff82111561521657615216615155565b5060051b60200190565b600082601f83011261523157600080fd5b81356020615246615241836151fc565b6151ad565b82815260059290921b8401810191818101908684111561526557600080fd5b8286015b848110156152805780358352918301918301615269565b509695505050505050565b600082601f83011261529c57600080fd5b813567ffffffffffffffff8111156152b6576152b6615155565b6152e760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016151ad565b8181528460208386010111156152fc57600080fd5b816020850160208301376000918101602001919091529392505050565b60006080828403121561532b57600080fd5b615333615184565b9050813567ffffffffffffffff8082111561534d57600080fd5b818401915084601f83011261536157600080fd5b81356020615371615241836151fc565b82815260059290921b8401810191818101908884111561539057600080fd5b948201945b838610156153b5576153a686614f70565b82529482019490820190615395565b865250858101359350828411156153cb57600080fd5b6153d787858801615220565b908501525060408401359150808211156153f057600080fd5b506153fd8482850161528b565b60408301525061540f60608301614f3c565b606082015292915050565b6000806040838503121561542d57600080fd5b823567ffffffffffffffff81111561544457600080fd5b61545085828601615319565b95602094909401359450505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114614f4757600080fd5b600080604083850312156154a257600080fd5b6154ab83614f70565b91506150136020840161545f565b6000602082840312156154cb57600080fd5b813567ffffffffffffffff8111156154e257600080fd5b614d2b84828501615319565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff81811683821601908082111561553e5761553e6154ee565b5092915050565b60006020828403121561555757600080fd5b5051919050565b80820281158282048414176145e3576145e36154ee565b6000826155ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b67ffffffffffffffff82811682821603908082111561553e5761553e6154ee565b6000602082840312156155e357600080fd5b81516bffffffffffffffffffffffff81168114614f6957600080fd5b818103818111156145e3576145e36154ee565b6000806040838503121561562557600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561567757600080fd5b6040516040810181811067ffffffffffffffff8211171561569a5761569a615155565b6040526156a68361545f565b815260208301356156b681614f2b565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036156f3576156f36154ee565b5060010190565b600081518084526020808501945080840160005b8381101561572a5781518752958201959082019060010161570e565b509495945050505050565b60005b83811015615750578181015183820152602001615738565b50506000910152565b60008151808452615771816020860160208601615735565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156157f557835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016157c3565b50508285015191508581038387015261580e81836156fa565b92505050604083015184820360408601526158298282615759565b915050606083015161583f606086018215159052565b509392505050565b848152600073ffffffffffffffffffffffffffffffffffffffff80861660208401528085166040840152506080606083015261588660808301846157a3565b9695505050505050565b808201808211156145e3576145e36154ee565b6000602082840312156158b557600080fd5b8151614f6981614f2b565b600082516158d2818460208701615735565b9190910192915050565b602081526000614f69602083018461575956fea2646970667358221220a1e16bedee4f6f96e07b1e9bb96ed2b052469d1b374581e02c41f5d52841480864736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061034c5760003560e01c80637cdb6e23116101bd578063c34c08e5116100f9578063e3da3d59116100a2578063e68d11af1161007c578063e68d11af146108a4578063e779ae7e14610901578063eed2a10014610914578063f024f0181461092757600080fd5b8063e3da3d5914610861578063e41de31314610888578063e45487851461089157600080fd5b8063d9a349c1116100d3578063d9a349c1146107f9578063daeccc791461080c578063dbbb64b91461083a57600080fd5b8063c34c08e514610785578063c415b95c146107a5578063d3a6f472146107d157600080fd5b8063a7229fd911610166578063b3e88f4911610140578063b3e88f4914610721578063b95327ec14610735578063ba5b79821461076a578063bfccf0ec1461077257600080fd5b8063a7229fd9146106e8578063b1bbf68b146106fb578063b34ea1e81461070e57600080fd5b80638456cb59116101975780638456cb59146106a85780639ed384f1146106b0578063a42dce80146106d557600080fd5b80637cdb6e23146106615780637f350917146106745780638112c4af146106a057600080fd5b806328d6b3a61161028c57806355ac8d30116102355780636497a8a01161020f5780636497a8a014610601578063754da37614610614578063799cebd1146106275780637b3a47591461063a57600080fd5b806355ac8d301461059e5780635bc789d9146105be5780635c975abb146105de57600080fd5b806338a631831161026657806338a631831461054a5780633f4ba83a1461056a5780634bb829361461057257600080fd5b806328d6b3a6146105115780632cd35475146105245780633682b90e1461053757600080fd5b80631810fe7f116102f95780631f211405116102d35780631f2114051461048e578063217a4b7014610496578063279af80a146104bd578063285718dc146104e457600080fd5b80631810fe7f1461043657806318769228146104535780631a465fe11461046757600080fd5b806314c799531161032a57806314c79953146103c3578063158274a5146103d75780631752bbf51461042357600080fd5b8063032ef9011461035157806307f184f1146103665780630b521dd014610379575b600080fd5b61036461035f366004614f4c565b61093a565b005b610364610374366004614f94565b6109e9565b6007546103a59074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b600c546103a59067ffffffffffffffff1681565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ba565b610364610431366004614faf565b610b21565b6003546104439060ff1681565b60405190151581526020016103ba565b6006546103a59067ffffffffffffffff1681565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b610364611012565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6103a57f000000000000000000000000000000000000000000000000000000000000000081565b600954600a54600b546104f692919083565b604080519384526020840192909252908201526060016103ba565b61036461051f366004614fe9565b611131565b610364610532366004614f94565b6112c1565b610364610545366004614faf565b61139f565b6000546103fe9073ffffffffffffffffffffffffffffffffffffffff1681565b610364611864565b6006546103fe9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6005546103fe9073ffffffffffffffffffffffffffffffffffffffff1681565b6007546103fe9073ffffffffffffffffffffffffffffffffffffffff1681565b60045474010000000000000000000000000000000000000000900460ff16610443565b61036461060f366004614f94565b6118d2565b610364610622366004614f94565b611b95565b61036461063536600461501c565b611c8d565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b61036461066f366004615048565b611da3565b6005546103a59074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b610364611e6e565b610364611fae565b6106b861201a565b6040516bffffffffffffffffffffffff90911681526020016103ba565b6103646106e3366004614f94565b6120b2565b6103646106f6366004615063565b6121d9565b610364610709366004614faf565b6122b3565b61036461071c36600461509f565b61283f565b6008546103a59067ffffffffffffffff1681565b61075c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016103ba565b6104f6612a1c565b6103646107803660046150cf565b612c19565b6001546103fe9073ffffffffffffffffffffffffffffffffffffffff1681565b600c546103fe9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6107e46107df36600461541a565b612e18565b604080519283526020830191909152016103ba565b610364610807366004614f94565b613496565b61044361081a36600461548f565b600260209081526000928352604080842090915290825290205460ff1681565b61075c7f000000000000000000000000000000000000000000000000000000000000000081565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b61075c61271081565b61036461089f366004614faf565b6135db565b600d546108d8906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016103ba565b6104f661090f3660046154b9565b61376d565b610364610922366004614faf565b613f90565b610364610935366004615048565b6143f5565b60005473ffffffffffffffffffffffffffffffffffffffff16331461098b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a3a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a87576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610b4f336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b610b85576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b8d6145e9565b6006546005544291610bc59167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661551d565b67ffffffffffffffff161115610c07576040517fb0f1cfa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c17818360096000015461466e565b6005805467ffffffffffffffff421674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff821681179092556040517f3b912eda000000000000000000000000000000000000000000000000000000008152600481018590526000602482015273ffffffffffffffffffffffffffffffffffffffff9283169183169190911760448201819052917f00000000000000000000000000000000000000000000000000000000000000001690633b912eda90606401600060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b5050600754600854600c546000945073ffffffffffffffffffffffffffffffffffffffff86169350637a23bf60928892889267ffffffffffffffff7401000000000000000000000000000000000000000090930483169291821691167f0000000000000000000000000000000000000000000000000000000000000000610d9f61201a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b1681526004810197909752602487019590955267ffffffffffffffff93841660448701529183166064860152821660848501521660a48301526bffffffffffffffffffffffff1660c482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660e4820152610104016020604051808303816000875af1158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190615545565b600d5490915060009061271090610ed49070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168461555e565b610ede9190615575565b90508015610f3957600c54610f399073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169168010000000000000000900416836146ea565b604080518681529282900360208401819052908301829052917f1c124aae7e7836fe1121102073d45015e58284f5402396338cb69b785b87cccb9060600160405180910390a1811561100b576007546040517f082f21eb0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063082f21eb906024015b600060405180830381600087803b158015610ff257600080fd5b505af1158015611006573d6000803e3d6000fd5b505050505b5050505050565b60045473ffffffffffffffffffffffffffffffffffffffff163314611063576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036110b4576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b61115f336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611195576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108267ffffffffffffffff1611806111ba57506127108167ffffffffffffffff16115b15611202576040517ff004ffca00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526024015b60405180910390fd5b600780547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff85811691820292909217909255600880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001691841691821790556040805192835260208301919091527fc38619f7264334ffff4bcc232b63a1ede5c74bb55961a9135cbc47c477d576a491015b60405180910390a15050565b6112ef336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611325576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f972c14f508b20e9af2fa5095b28a6f846d93361d88154e9392b99cfb5df89165906020015b60405180910390a150565b6113cd336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611403576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61140b6145e9565b60065460055442916114439167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661551d565b67ffffffffffffffff161115611485576040517fb0f1cfa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611495818360096000015461466e565b6005805467ffffffffffffffff421674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff821681179092556040517f3b912eda000000000000000000000000000000000000000000000000000000008152600481018590526000602482015273ffffffffffffffffffffffffffffffffffffffff9283169183169190911760448201819052917f00000000000000000000000000000000000000000000000000000000000000001690633b912eda90606401600060405180830381600087803b15801561158457600080fd5b505af1158015611598573d6000803e3d6000fd5b5050600754600854600c546000945073ffffffffffffffffffffffffffffffffffffffff86169350637a23bf60928892889267ffffffffffffffff74010000000000000000000000000000000000000000909304831692918216911661161f7f000000000000000000000000000000000000000000000000000000000000000060016155b0565b61162761201a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b1681526004810197909752602487019590955267ffffffffffffffff93841660448701529183166064860152821660848501521660a48301526bffffffffffffffffffffffff1660c482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660e4820152610104016020604051808303816000875af11580156116fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171f9190615545565b600d549091506000906127109061175c9070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168461555e565b6117669190615575565b905080156117c157600c546117c19073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169168010000000000000000900416836146ea565b604080518681529282900360208401819052908301829052917f329e87e15e4f179a2f657ed4d03f58c1a6c480b4f3c232ada9bb0c9a1919a3719060600160405180910390a1811561100b576007546040517fa2736b820000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063a2736b8290602401610fd8565b611892336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b6118c8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118d06147be565b565b611900336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611936576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f556e2aaa423a3aa1275f9b8e9646d73e5c7d316d10d383ed3b52ef18851e900990600090a260075473ffffffffffffffffffffffffffffffffffffffff168015611a1a576119d873ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682600061483b565b611a1a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682600061483b565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84811691909117909155611a8d907f00000000000000000000000000000000000000000000000000000000000000001683600061483b565b611aee73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6149bd565b611b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683600061483b565b611b9173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6149bd565b5050565b611bc3336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611bf9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f73242cc206066336b9be50f9cf5905a0f722ce90450a2948f6b14d664a6ff0a090600090a26006805473ffffffffffffffffffffffffffffffffffffffff90921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055565b611cbb336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611cf1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821580611cfc575081155b80611d05575080155b15611d4d576040517f72fcc23a0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290526064016111f9565b6009839055600a829055600b81905560408051848152602081018490529081018290527fb3cef6fd6ea3d0d138818cf3f864db386999cdc2d3b12836b3928de8be1df1b7906060015b60405180910390a1505050565b611dd1336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b611e07576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f17c8a108c2eec39ecb21faf87558faedcf8b370c58e113e8aff0d52ff959761690602001611394565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611ec4576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611f15576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b611fdc336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b612012576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118d0614abc565b6000600660089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ed384f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad91906155d1565b905090565b600c5468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461210f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661215c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040517f12e1d17016b94668449f97876f4a8d5cc2c19f314db337418894734037cc19d490600090a250565b612207336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b61223d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61225e73ffffffffffffffffffffffffffffffffffffffff841683836146ea565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f76fb5f9555be8170fef33d7b413bcbe740a6a96cd162b1234b602329b0c84e3290606001611d96565b6122e1336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b612317576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61231f6145e9565b60065460055442916123579167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661551d565b67ffffffffffffffff161115612399576040517fb0f1cfa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123a9818360096001015461466e565b600580547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004267ffffffffffffffff16021790556007546040517fb926f2c20000000000000000000000000000000000000000000000000000000081526004810184905230602482015273ffffffffffffffffffffffffffffffffffffffff9091169063b926f2c290604401600060405180830381600087803b15801561246657600080fd5b505af115801561247a573d6000803e3d6000fd5b5050600d546000925061271091506124a4906fffffffffffffffffffffffffffffffff168561555e565b6124ae9190615575565b9050801561250957600c546125099073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169168010000000000000000900416836146ea565b600061251582856155ff565b60055490915073ffffffffffffffffffffffffffffffffffffffff90811690612561907f00000000000000000000000000000000000000000000000000000000000000001682846146ea565b60085460075460009173ffffffffffffffffffffffffffffffffffffffff84169163e3da5a29918691899167ffffffffffffffff90811691740100000000000000000000000000000000000000009004166125ba61201a565b600c5467ffffffffffffffff166125f27f000000000000000000000000000000000000000000000000000000000000000060016155b0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b1681526004810197909752602487019590955267ffffffffffffffff938416604487015291831660648601526bffffffffffffffffffffffff166084850152811660a48401521660c482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660e4820152610104016020604051808303816000875af11580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea9190615545565b60408051888152602081018390529081018690529091507f5544c820a1ddc9773cd4bc0d75fc753e235b1c6d405eb33760f5dc71810fdb44906060015b60405180910390a180156128375761279673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836146ea565b6040517f59fe8539000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906359fe853990602401600060405180830381600087803b15801561281e57600080fd5b505af1158015612832573d6000803e3d6000fd5b505050505b505050505050565b61286d336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b6128a3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806128ea576128ea73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333085614b2b565b61294b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846146ea565b6040517f59fe8539000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906359fe853990602401600060405180830381600087803b1580156129d357600080fd5b505af11580156129e7573d6000803e3d6000fd5b505050507f5eb7e3bda527afe73ef6c82fbb82cf89d964c0b3bd7fa27af604e155679a563a826040516112b591815260200190565b6000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663876f303b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab19190615545565b90508015612c13577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad7a672f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b489190615545565b600554604080517f0c39bcfd0000000000000000000000000000000000000000000000000000000081528151939750600093849373ffffffffffffffffffffffffffffffffffffffff1692630c39bcfd92600480820193918290030181865afa158015612bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdd9190615612565b909250905082612bed878461555e565b612bf79190615575565b945082612c04878361555e565b612c0e9190615575565b935050505b50909192565b612c47336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b612c7d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316612cca576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b8281101561283757848482818110612cfd57612cfd615636565b905060400201803603810190612d139190615665565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055612e11816156c2565b9050612ce3565b600080612e49336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b612e7f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602084015151845151141580612e985750835151600214155b80612ea4575083606001515b15612edb576040517f1a73fb4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c9190615545565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561301c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130409190615545565b6040517f3b912eda00000000000000000000000000000000000000000000000000000000815260048101879052600060248201523060448201529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633b912eda90606401600060405180830381600087803b1580156130d857600080fd5b505af11580156130ec573d6000803e3d6000fd5b50506040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250638bdb39139150613188907f000000000000000000000000000000000000000000000000000000000000000090309081908c90600401615847565b600060405180830381600087803b1580156131a257600080fd5b505af11580156131b6573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528492507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691506370a0823190602401602060405180830381865afa158015613246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326a9190615545565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529190039350819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156132fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331f9190615545565b600754919003945073ffffffffffffffffffffffffffffffffffffffff1683156133c4576040517f082f21eb0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff82169063082f21eb90602401600060405180830381600087803b1580156133ab57600080fd5b505af11580156133bf573d6000803e3d6000fd5b505050505b841561344b576040517fa2736b820000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff82169063a2736b8290602401600060405180830381600087803b15801561343257600080fd5b505af1158015613446573d6000803e3d6000fd5b505050505b60408051868152602081018690529081018790527f0bb89aa54ed6940a7e7167bd262b2400d63945045ceff1a52a05f2601ed215f19060600160405180910390a15050509250929050565b6134c4336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b6134fa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116613547576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600c5468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314613638576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000821115613692576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008111156136ec576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051838152602081018390527f96bb4d72e07b4a4120c9841de5d46f114a409d85a997deebb2f93c81c16a9f10910160405180910390a1604080518082019091526fffffffffffffffffffffffffffffffff92831680825291909216602090920182905270010000000000000000000000000000000090910217600d55565b60008060006137a0336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b6137d6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020840151518451511415806137ef5750835151600214155b806137fb575083606001515b15613832576040517f1a73fb4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156138a557836020015160018151811061387957613879615636565b6020026020010151846020015160008151811061389857613898615636565b60200260200101516138e4565b83602001516000815181106138bc576138bc615636565b602002602001015184602001516001815181106138db576138db615636565b60200260200101515b6007546040517f27a06a290000000000000000000000000000000000000000000000000000000081526004810184905230602482015291955091935073ffffffffffffffffffffffffffffffffffffffff9091169081906327a06a2990604401600060405180830381600087803b15801561395e57600080fd5b505af1158015613972573d6000803e3d6000fd5b50506040517fb926f2c20000000000000000000000000000000000000000000000000000000081526004810187905230602482015273ffffffffffffffffffffffffffffffffffffffff8416925063b926f2c29150604401600060405180830381600087803b1580156139e457600080fd5b505af11580156139f8573d6000803e3d6000fd5b50613a5f92505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690507f0000000000000000000000000000000000000000000000000000000000000000856149bd565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063dd62ed3e90604401602060405180830381865afa158015613b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3a9190615545565b905084811015613c0757613ba673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000600061483b565b613c0773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000876149bd565b506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015613c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb99190615545565b6040517fb95cac2800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b95cac2890613d54907f000000000000000000000000000000000000000000000000000000000000000090309081908c90600401615847565b600060405180830381600087803b158015613d6e57600080fd5b505af1158015613d82573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691506370a0823190602401602060405180830381865afa158015613e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e379190615545565b60408051888152602081018890529390910390830181905293507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be391606001905060405180910390a18115613f8857613ee773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846146ea565b6040517f59fe8539000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906359fe853990602401600060405180830381600087803b158015613f6f57600080fd5b505af1158015613f83573d6000803e3d6000fd5b505050505b509193909250565b613fbe336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b613ff4576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613ffc6145e9565b60065460055442916140349167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661551d565b67ffffffffffffffff161115614076576040517fb0f1cfa300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614086818360096002015461466e565b600580547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004267ffffffffffffffff16021790556007546040517f27a06a290000000000000000000000000000000000000000000000000000000081526004810184905230602482015273ffffffffffffffffffffffffffffffffffffffff909116906327a06a2990604401600060405180830381600087803b15801561414357600080fd5b505af1158015614157573d6000803e3d6000fd5b5050600d54600092506127109150614181906fffffffffffffffffffffffffffffffff168561555e565b61418b9190615575565b905080156141e657600c546141e69073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169168010000000000000000900416836146ea565b60006141f282856155ff565b60055490915073ffffffffffffffffffffffffffffffffffffffff9081169061423e907f00000000000000000000000000000000000000000000000000000000000000001682846146ea565b60085460075460009173ffffffffffffffffffffffffffffffffffffffff84169163e3da5a29918691899167ffffffffffffffff908116917401000000000000000000000000000000000000000090041661429761201a565b600c5460405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526004810196909652602486019490945267ffffffffffffffff928316604486015290821660648501526bffffffffffffffffffffffff16608484015290811660a48301527f00000000000000000000000000000000000000000000000000000000000000001660c482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660e4820152610104016020604051808303816000875af1158015614390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143b49190615545565b60408051888152602081018390529081018690529091507fa5d208afbbad321423296e33c74819e11fdb1b9ccf684d6876ede2d160ca4d1c90606001612727565b614423336000357fffffffff0000000000000000000000000000000000000000000000000000000016614525565b614459576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108167ffffffffffffffff16118061447b575067ffffffffffffffff8116155b156144be576040517ff004ffca00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526024016111f9565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f630679cd3f880ff6c420f020b88cd88a6bb95573d20208862fed06f5c5fd6bce90602001611394565b60035460009060ff1615614557575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146145e3565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806145d2575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156145df575060016145e3565b5060005b92915050565b60045474010000000000000000000000000000000000000000900460ff16156118d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016111f9565b826000036146a8576040517f0ae375bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808211156146e5576040517f1beda7ba000000000000000000000000000000000000000000000000000000008152600481018390526024016111f9565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526146e59084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614b89565b6147c6614c98565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b8015806148db57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156148b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148d99190615545565b155b614967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016111f9565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526146e59084907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161473c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015614a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a579190615545565b9050614ab6847f095ea7b30000000000000000000000000000000000000000000000000000000085614a898686615890565b60405173ffffffffffffffffffffffffffffffffffffffff9092166024830152604482015260640161473c565b50505050565b614ac46145e9565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586148113390565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052614ab69085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161473c565b6000614beb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16614d1c9092919063ffffffff16565b9050805160001480614c0c575080806020019051810190614c0c91906158a3565b6146e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016111f9565b60045474010000000000000000000000000000000000000000900460ff166118d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016111f9565b6060614d2b8484600085614d33565b949350505050565b606082471015614dc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016111f9565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051614dee91906158c0565b60006040518083038185875af1925050503d8060008114614e2b576040519150601f19603f3d011682016040523d82523d6000602084013e614e30565b606091505b5091509150614e4187838387614e4c565b979650505050505050565b60608315614ee2578251600003614edb5773ffffffffffffffffffffffffffffffffffffffff85163b614edb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016111f9565b5081614d2b565b614d2b8383815115614ef75781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f991906158dc565b8015158114614f3957600080fd5b50565b8035614f4781614f2b565b919050565b600060208284031215614f5e57600080fd5b8135614f6981614f2b565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114614f4757600080fd5b600060208284031215614fa657600080fd5b614f6982614f70565b60008060408385031215614fc257600080fd5b50508035926020909101359150565b803567ffffffffffffffff81168114614f4757600080fd5b60008060408385031215614ffc57600080fd5b61500583614fd1565b915061501360208401614fd1565b90509250929050565b60008060006060848603121561503157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561505a57600080fd5b614f6982614fd1565b60008060006060848603121561507857600080fd5b61508184614f70565b925061508f60208501614f70565b9150604084013590509250925092565b600080604083850312156150b257600080fd5b8235915060208301356150c481614f2b565b809150509250929050565b6000806000604084860312156150e457600080fd5b6150ed84614f70565b9250602084013567ffffffffffffffff8082111561510a57600080fd5b818601915086601f83011261511e57600080fd5b81358181111561512d57600080fd5b8760208260061b850101111561514257600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156151a7576151a7615155565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156151f4576151f4615155565b604052919050565b600067ffffffffffffffff82111561521657615216615155565b5060051b60200190565b600082601f83011261523157600080fd5b81356020615246615241836151fc565b6151ad565b82815260059290921b8401810191818101908684111561526557600080fd5b8286015b848110156152805780358352918301918301615269565b509695505050505050565b600082601f83011261529c57600080fd5b813567ffffffffffffffff8111156152b6576152b6615155565b6152e760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016151ad565b8181528460208386010111156152fc57600080fd5b816020850160208301376000918101602001919091529392505050565b60006080828403121561532b57600080fd5b615333615184565b9050813567ffffffffffffffff8082111561534d57600080fd5b818401915084601f83011261536157600080fd5b81356020615371615241836151fc565b82815260059290921b8401810191818101908884111561539057600080fd5b948201945b838610156153b5576153a686614f70565b82529482019490820190615395565b865250858101359350828411156153cb57600080fd5b6153d787858801615220565b908501525060408401359150808211156153f057600080fd5b506153fd8482850161528b565b60408301525061540f60608301614f3c565b606082015292915050565b6000806040838503121561542d57600080fd5b823567ffffffffffffffff81111561544457600080fd5b61545085828601615319565b95602094909401359450505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114614f4757600080fd5b600080604083850312156154a257600080fd5b6154ab83614f70565b91506150136020840161545f565b6000602082840312156154cb57600080fd5b813567ffffffffffffffff8111156154e257600080fd5b614d2b84828501615319565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff81811683821601908082111561553e5761553e6154ee565b5092915050565b60006020828403121561555757600080fd5b5051919050565b80820281158282048414176145e3576145e36154ee565b6000826155ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b67ffffffffffffffff82811682821603908082111561553e5761553e6154ee565b6000602082840312156155e357600080fd5b81516bffffffffffffffffffffffff81168114614f6957600080fd5b818103818111156145e3576145e36154ee565b6000806040838503121561562557600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561567757600080fd5b6040516040810181811067ffffffffffffffff8211171561569a5761569a615155565b6040526156a68361545f565b815260208301356156b681614f2b565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036156f3576156f36154ee565b5060010190565b600081518084526020808501945080840160005b8381101561572a5781518752958201959082019060010161570e565b509495945050505050565b60005b83811015615750578181015183820152602001615738565b50506000910152565b60008151808452615771816020860160208601615735565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156157f557835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016157c3565b50508285015191508581038387015261580e81836156fa565b92505050604083015184820360408601526158298282615759565b915050606083015161583f606086018215159052565b509392505050565b848152600073ffffffffffffffffffffffffffffffffffffffff80861660208401528085166040840152506080606083015261588660808301846157a3565b9695505050505050565b808201808211156145e3576145e36154ee565b6000602082840312156158b557600080fd5b8151614f6981614f2b565b600082516158d2818460208701615735565b9190910192915050565b602081526000614f69602083018461575956fea2646970667358221220a1e16bedee4f6f96e07b1e9bb96ed2b052469d1b374581e02c41f5d52841480864736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/RamosTestnetAuraStaking.sol/RamosTestnetAuraStaking.json b/apps/dapp/abi/contracts/amo/RamosTestnetAuraStaking.sol/RamosTestnetAuraStaking.json new file mode 100644 index 000000000..4fb524de7 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/RamosTestnetAuraStaking.sol/RamosTestnetAuraStaking.json @@ -0,0 +1,692 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RamosTestnetAuraStaking", + "sourceName": "contracts/amo/test/RamosTestnetAuraStaking.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "_bptToken", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "Unimplemented", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RecoveredToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "rewardTokens", + "type": "address[]" + } + ], + "name": "RewardTokensSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "pId", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "rewards", + "type": "address" + } + ], + "name": "SetAuraPoolInfo", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "SetRewardsRecipient", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "auraPoolInfo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "booster", + "outputs": [ + { + "internalType": "contract IAuraBooster", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "bptToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "depositAndStake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "earned", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "name": "getReward", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isAuraShutdown", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "rewardTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setAuraPoolInfo", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "name": "setRewardTokens", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setRewardsRecipient", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "showPositions", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "staked", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "earned", + "type": "uint256" + } + ], + "internalType": "struct IAuraStaking.Position", + "name": "position", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "stakedBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "totalBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "withdrawAllAndUnwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "withdrawAndUnwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162001b8338038062001b8383398101604081905262000034916200010e565b82826001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b03199081166001600160a01b0394851617909155600180549091169183169190911790551660805250620001629050565b6001600160a01b03811681146200010b57600080fd5b50565b6000806000606084860312156200012457600080fd5b83516200013181620000f5565b60208501519093506200014481620000f5565b60408501519092506200015781620000f5565b809150509250925092565b6080516119e96200019a600039600081816102ce0152818161058f0152818161062b0152818161097b0152610c2901526119e96000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638112c4af116100f9578063c34c08e511610097578063d9a349c111610071578063d9a349c1146103ad578063da94e0f4146103c0578063daeccc7914610401578063ff2a7d30146103a557600080fd5b8063c34c08e514610385578063c6def076146103a5578063d6f19262146102b857600080fd5b8063a4698feb116100d3578063a4698feb14610349578063a7229fd914610357578063ad7a672f1461036a578063bfccf0ec1461037257600080fd5b80638112c4af14610311578063928df23b146103195780639fb4a6111461032057600080fd5b806338a63183116101665780635b9f0016116101405780635b9f0016146102b85780637b3a4759146102c95780637bb7bed1146102f05780637bbf44271461030357600080fd5b806338a631831461024f5780633b912eda1461029457806359fe8539146102a757600080fd5b80631810fe7f116101a25780631810fe7f146102045780631a54259c146102265780631f21140514610239578063201e81a81461024157600080fd5b8063032ef901146101c957806306b2426a146101de57806307f184f1146101f1575b600080fd5b6101dc6101d736600461148f565b61042f565b005b6101dc6101ec3660046114dc565b6104de565b6101dc6101ff366004611511565b610658565b6003546102119060ff1681565b60405190151581526020015b60405180910390f35b6101dc610234366004611511565b610790565b6101dc6107c2565b6101dc6102343660046115aa565b60005461026f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021d565b6101dc6102a2366004611657565b6108e1565b6101dc6102b5366004611695565b50565b60005b60405190815260200161021d565b61026f7f000000000000000000000000000000000000000000000000000000000000000081565b61026f6102fe366004611695565b6109a2565b6101dc6102343660046116ae565b6101dc6109d6565b6001610211565b60408051808201825260008082526020918201818152835191825251918101919091520161021d565b6101dc61023436600461148f565b6101dc6103653660046116e5565b610b16565b6102bb610bf8565b6101dc610380366004611721565b610cae565b60015461026f9073ffffffffffffffffffffffffffffffffffffffff1681565b61026f6109a2565b6101dc6103bb366004611511565b610eb5565b6103c8610ffa565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815293909216602084015263ffffffff169082015260600161021d565b61021161040f3660046117d7565b600260209081526000928352604080842090915290825290205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610480576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b61050c336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610542576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811615610654576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060f9190611801565b905061065273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683836110f5565b505b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166106f6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045473ffffffffffffffffffffffffffffffffffffffff163314610813576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610864576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b61090f336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610945576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116156106525761065273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682856110f5565b60006040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610a2c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610a7d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b610b44336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610b7a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b9b73ffffffffffffffffffffffffffffffffffffffff841683836110f5565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f76fb5f9555be8170fef33d7b413bcbe740a6a96cd162b1234b602329b0c84e329060600160405180910390a1505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190611801565b905090565b610cdc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610d12576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610d5f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610ead57848482818110610d9257610d9261181a565b905060400201803603810190610da89190611849565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055610ea6816118a6565b9050610d78565b505050505050565b610ee3336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610f19576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610f66576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008060006040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460009060ff1615611063575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146110ef565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806110de575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156110eb575060016110ef565b5060005b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610652928692916000916111c0918516908490611272565b90508051600014806111e15750808060200190518101906111e19190611905565b610652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60606112818484600085611289565b949350505050565b60608247101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611269565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113449190611946565b60006040518083038185875af1925050503d8060008114611381576040519150601f19603f3d011682016040523d82523d6000602084013e611386565b606091505b5091509150611397878383876113a2565b979650505050505050565b606083156114385782516000036114315773ffffffffffffffffffffffffffffffffffffffff85163b611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611269565b5081611281565b611281838381511561144d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112699190611962565b80151581146102b557600080fd5b6000602082840312156114a157600080fd5b81356114ac81611481565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d757600080fd5b919050565b600080604083850312156114ef57600080fd5b82356114fa81611481565b9150611508602084016114b3565b90509250929050565b60006020828403121561152357600080fd5b6114ac826114b3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156115a2576115a261152c565b604052919050565b600060208083850312156115bd57600080fd5b823567ffffffffffffffff808211156115d557600080fd5b818501915085601f8301126115e957600080fd5b8135818111156115fb576115fb61152c565b8060051b915061160c84830161155b565b818152918301840191848101908884111561162657600080fd5b938501935b8385101561164b5761163c856114b3565b8252938501939085019061162b565b98975050505050505050565b60008060006060848603121561166c57600080fd5b83359250602084013561167e81611481565b915061168c604085016114b3565b90509250925092565b6000602082840312156116a757600080fd5b5035919050565b6000806000606084860312156116c357600080fd5b833563ffffffff811681146116d757600080fd5b925061167e602085016114b3565b6000806000606084860312156116fa57600080fd5b611703846114b3565b9250611711602085016114b3565b9150604084013590509250925092565b60008060006040848603121561173657600080fd5b61173f846114b3565b9250602084013567ffffffffffffffff8082111561175c57600080fd5b818601915086601f83011261177057600080fd5b81358181111561177f57600080fd5b8760208260061b850101111561179457600080fd5b6020830194508093505050509250925092565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146114d757600080fd5b600080604083850312156117ea57600080fd5b6117f3836114b3565b9150611508602084016117a7565b60006020828403121561181357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561185b57600080fd5b6040516040810181811067ffffffffffffffff8211171561187e5761187e61152c565b60405261188a836117a7565b8152602083013561189a81611481565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60006020828403121561191757600080fd5b81516114ac81611481565b60005b8381101561193d578181015183820152602001611925565b50506000910152565b60008251611958818460208701611922565b9190910192915050565b6020815260008251806020840152611981816040850160208701611922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200a819b83b1e4ba2d830b2036d07eb4cf5ed46a73fe19db8c51dccbe295594c1164736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638112c4af116100f9578063c34c08e511610097578063d9a349c111610071578063d9a349c1146103ad578063da94e0f4146103c0578063daeccc7914610401578063ff2a7d30146103a557600080fd5b8063c34c08e514610385578063c6def076146103a5578063d6f19262146102b857600080fd5b8063a4698feb116100d3578063a4698feb14610349578063a7229fd914610357578063ad7a672f1461036a578063bfccf0ec1461037257600080fd5b80638112c4af14610311578063928df23b146103195780639fb4a6111461032057600080fd5b806338a63183116101665780635b9f0016116101405780635b9f0016146102b85780637b3a4759146102c95780637bb7bed1146102f05780637bbf44271461030357600080fd5b806338a631831461024f5780633b912eda1461029457806359fe8539146102a757600080fd5b80631810fe7f116101a25780631810fe7f146102045780631a54259c146102265780631f21140514610239578063201e81a81461024157600080fd5b8063032ef901146101c957806306b2426a146101de57806307f184f1146101f1575b600080fd5b6101dc6101d736600461148f565b61042f565b005b6101dc6101ec3660046114dc565b6104de565b6101dc6101ff366004611511565b610658565b6003546102119060ff1681565b60405190151581526020015b60405180910390f35b6101dc610234366004611511565b610790565b6101dc6107c2565b6101dc6102343660046115aa565b60005461026f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021d565b6101dc6102a2366004611657565b6108e1565b6101dc6102b5366004611695565b50565b60005b60405190815260200161021d565b61026f7f000000000000000000000000000000000000000000000000000000000000000081565b61026f6102fe366004611695565b6109a2565b6101dc6102343660046116ae565b6101dc6109d6565b6001610211565b60408051808201825260008082526020918201818152835191825251918101919091520161021d565b6101dc61023436600461148f565b6101dc6103653660046116e5565b610b16565b6102bb610bf8565b6101dc610380366004611721565b610cae565b60015461026f9073ffffffffffffffffffffffffffffffffffffffff1681565b61026f6109a2565b6101dc6103bb366004611511565b610eb5565b6103c8610ffa565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815293909216602084015263ffffffff169082015260600161021d565b61021161040f3660046117d7565b600260209081526000928352604080842090915290825290205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610480576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b61050c336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610542576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811615610654576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060f9190611801565b905061065273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683836110f5565b505b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166106f6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045473ffffffffffffffffffffffffffffffffffffffff163314610813576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610864576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b61090f336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610945576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116156106525761065273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682856110f5565b60006040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610a2c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610a7d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b610b44336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610b7a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b9b73ffffffffffffffffffffffffffffffffffffffff841683836110f5565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f76fb5f9555be8170fef33d7b413bcbe740a6a96cd162b1234b602329b0c84e329060600160405180910390a1505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190611801565b905090565b610cdc336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610d12576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610d5f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610ead57848482818110610d9257610d9261181a565b905060400201803603810190610da89190611849565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055610ea6816118a6565b9050610d78565b505050505050565b610ee3336000357fffffffff0000000000000000000000000000000000000000000000000000000016611031565b610f19576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610f66576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008060006040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460009060ff1615611063575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146110ef565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806110de575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156110eb575060016110ef565b5060005b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610652928692916000916111c0918516908490611272565b90508051600014806111e15750808060200190518101906111e19190611905565b610652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60606112818484600085611289565b949350505050565b60608247101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611269565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113449190611946565b60006040518083038185875af1925050503d8060008114611381576040519150601f19603f3d011682016040523d82523d6000602084013e611386565b606091505b5091509150611397878383876113a2565b979650505050505050565b606083156114385782516000036114315773ffffffffffffffffffffffffffffffffffffffff85163b611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611269565b5081611281565b611281838381511561144d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112699190611962565b80151581146102b557600080fd5b6000602082840312156114a157600080fd5b81356114ac81611481565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d757600080fd5b919050565b600080604083850312156114ef57600080fd5b82356114fa81611481565b9150611508602084016114b3565b90509250929050565b60006020828403121561152357600080fd5b6114ac826114b3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156115a2576115a261152c565b604052919050565b600060208083850312156115bd57600080fd5b823567ffffffffffffffff808211156115d557600080fd5b818501915085601f8301126115e957600080fd5b8135818111156115fb576115fb61152c565b8060051b915061160c84830161155b565b818152918301840191848101908884111561162657600080fd5b938501935b8385101561164b5761163c856114b3565b8252938501939085019061162b565b98975050505050505050565b60008060006060848603121561166c57600080fd5b83359250602084013561167e81611481565b915061168c604085016114b3565b90509250925092565b6000602082840312156116a757600080fd5b5035919050565b6000806000606084860312156116c357600080fd5b833563ffffffff811681146116d757600080fd5b925061167e602085016114b3565b6000806000606084860312156116fa57600080fd5b611703846114b3565b9250611711602085016114b3565b9150604084013590509250925092565b60008060006040848603121561173657600080fd5b61173f846114b3565b9250602084013567ffffffffffffffff8082111561175c57600080fd5b818601915086601f83011261177057600080fd5b81358181111561177f57600080fd5b8760208260061b850101111561179457600080fd5b6020830194508093505050509250925092565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146114d757600080fd5b600080604083850312156117ea57600080fd5b6117f3836114b3565b9150611508602084016117a7565b60006020828403121561181357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561185b57600080fd5b6040516040810181811067ffffffffffffffff8211171561187e5761187e61152c565b60405261188a836117a7565b8152602083013561189a81611481565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60006020828403121561191757600080fd5b81516114ac81611481565b60005b8381101561193d578181015183820152602001611925565b50506000910152565b60008251611958818460208701611922565b9190910192915050565b6020815260008251806020840152611981816040850160208701611922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200a819b83b1e4ba2d830b2036d07eb4cf5ed46a73fe19db8c51dccbe295594c1164736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/RamosTestnetTempleTokenVault.sol/RamosTestnetTempleTokenVault.json b/apps/dapp/abi/contracts/amo/RamosTestnetTempleTokenVault.sol/RamosTestnetTempleTokenVault.json new file mode 100644 index 000000000..121d35e5b --- /dev/null +++ b/apps/dapp/abi/contracts/amo/RamosTestnetTempleTokenVault.sol/RamosTestnetTempleTokenVault.json @@ -0,0 +1,115 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RamosTestnetTempleTokenVault", + "sourceName": "contracts/amo/test/RamosTestnetTempleTokenVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_templeToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_quoteToken", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrowProtocolToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrowQuoteToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "quoteToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "repayProtocolToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "repayQuoteToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract ITempleERC20Token", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561001057600080fd5b506040516109e53803806109e583398101604081905261002f91610062565b6001600160a01b039182166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a0516109096100dc600039600081816091015281816102e7015261032c01526000818161010701528181610156015281816101ad015261026d01526109096000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a2736b8211610050578063a2736b82146100ef578063b1a9069c14610102578063b926f2c21461012957600080fd5b8063082f21eb14610077578063217a4b701461008c57806327a06a29146100dc575b600080fd5b61008a6100853660046107b7565b61013c565b005b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61008a6100ea3660046107d0565b610221565b61008a6100fd3660046107b7565b6102cd565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b61008a6101373660046107d0565b610312565b61017e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610357565b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561020657600080fd5b505af115801561021a573d6000803e3d6000fd5b5050505050565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156102b157600080fd5b505af11580156102c5573d6000803e3d6000fd5b505050505050565b61030f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610357565b50565b61035373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168284610439565b5050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104339085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610494565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261048f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016103b1565b505050565b60006104f6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105a89092919063ffffffff16565b90508051600014806105175750808060200190518101906105179190610819565b61048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60606105b784846000856105bf565b949350505050565b606082471015610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161059f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161067a9190610866565b60006040518083038185875af1925050503d80600081146106b7576040519150601f19603f3d011682016040523d82523d6000602084013e6106bc565b606091505b50915091506106cd878383876106d8565b979650505050505050565b6060831561076e5782516000036107675773ffffffffffffffffffffffffffffffffffffffff85163b610767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161059f565b50816105b7565b6105b783838151156107835781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059f9190610882565b6000602082840312156107c957600080fd5b5035919050565b600080604083850312156107e357600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461080e57600080fd5b809150509250929050565b60006020828403121561082b57600080fd5b8151801515811461083b57600080fd5b9392505050565b60005b8381101561085d578181015183820152602001610845565b50506000910152565b60008251610878818460208701610842565b9190910192915050565b60208152600082518060208401526108a1816040850160208701610842565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220cbd9db6a33d7c5d483bfaa09fcadde15d0285976168b3fc1328d6d56cbc0469a64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063a2736b8211610050578063a2736b82146100ef578063b1a9069c14610102578063b926f2c21461012957600080fd5b8063082f21eb14610077578063217a4b701461008c57806327a06a29146100dc575b600080fd5b61008a6100853660046107b7565b61013c565b005b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61008a6100ea3660046107d0565b610221565b61008a6100fd3660046107b7565b6102cd565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b61008a6101373660046107d0565b610312565b61017e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610357565b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561020657600080fd5b505af115801561021a573d6000803e3d6000fd5b5050505050565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156102b157600080fd5b505af11580156102c5573d6000803e3d6000fd5b505050505050565b61030f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610357565b50565b61035373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168284610439565b5050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104339085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610494565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261048f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016103b1565b505050565b60006104f6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105a89092919063ffffffff16565b90508051600014806105175750808060200190518101906105179190610819565b61048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60606105b784846000856105bf565b949350505050565b606082471015610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161059f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161067a9190610866565b60006040518083038185875af1925050503d80600081146106b7576040519150601f19603f3d011682016040523d82523d6000602084013e6106bc565b606091505b50915091506106cd878383876106d8565b979650505050505050565b6060831561076e5782516000036107675773ffffffffffffffffffffffffffffffffffffffff85163b610767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161059f565b50816105b7565b6105b783838151156107835781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059f9190610882565b6000602082840312156107c957600080fd5b5035919050565b600080604083850312156107e357600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461080e57600080fd5b809150509250929050565b60006020828403121561082b57600080fd5b8151801515811461083b57600080fd5b9392505050565b60005b8381101561085d578181015183820152602001610845565b50506000910152565b60008251610878818460208701610842565b9190910192915050565b60208152600082518060208401526108a1816040850160208701610842565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220cbd9db6a33d7c5d483bfaa09fcadde15d0285976168b3fc1328d6d56cbc0469a64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IAuraStakingProxy.sol/AMO_IAuraStakingProxy.json b/apps/dapp/abi/contracts/amo/external/IAuraStakingProxy.sol/AMO_IAuraStakingProxy.json new file mode 100644 index 000000000..2edf27f40 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IAuraStakingProxy.sol/AMO_IAuraStakingProxy.json @@ -0,0 +1,44 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO_IAuraStakingProxy", + "sourceName": "contracts/amo/test/external/IAuraStakingProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minOut", + "type": "uint256" + } + ], + "name": "distribute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "distribute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "distributeOther", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IAuraToken.sol/AMO_IAuraToken.json b/apps/dapp/abi/contracts/amo/external/IAuraToken.sol/AMO_IAuraToken.json new file mode 100644 index 000000000..974e81b9e --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IAuraToken.sol/AMO_IAuraToken.json @@ -0,0 +1,29 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO_IAuraToken", + "sourceName": "contracts/amo/test/external/IAuraToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IBalancerAuthorizer.sol/AMO__IBalancerAuthorizer.json b/apps/dapp/abi/contracts/amo/external/IBalancerAuthorizer.sol/AMO__IBalancerAuthorizer.json new file mode 100644 index 000000000..277a412a2 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IBalancerAuthorizer.sol/AMO__IBalancerAuthorizer.json @@ -0,0 +1,130 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__IBalancerAuthorizer", + "sourceName": "contracts/amo/test/external/IBalancerAuthorizer.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "actionId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "canPerform", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "roles", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRoles", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "roles", + "type": "bytes32[]" + }, + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + } + ], + "name": "grantRolesToMany", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "roles", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRoles", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "roles", + "type": "bytes32[]" + }, + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + } + ], + "name": "revokeRolesFromMany", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IBalancerAuthorizerAdapter.sol/AMO__IBalancerAuthorizerAdapter.json b/apps/dapp/abi/contracts/amo/external/IBalancerAuthorizerAdapter.sol/AMO__IBalancerAuthorizerAdapter.json new file mode 100644 index 000000000..2d51ec54d --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IBalancerAuthorizerAdapter.sol/AMO__IBalancerAuthorizerAdapter.json @@ -0,0 +1,80 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__IBalancerAuthorizerAdapter", + "sourceName": "contracts/amo/test/external/IBalancerAuthorizerAdapter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + } + ], + "name": "getActionId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAuthorizer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVault", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "performAction", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IBalancerHelpers.sol/IBalancerHelpers.json b/apps/dapp/abi/contracts/amo/external/IBalancerHelpers.sol/IBalancerHelpers.json new file mode 100644 index 000000000..cb8ab9574 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IBalancerHelpers.sol/IBalancerHelpers.json @@ -0,0 +1,133 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IBalancerHelpers", + "sourceName": "contracts/amo/test/external/IBalancerHelpers.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerHelpers.ExitPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "queryExit", + "outputs": [ + { + "internalType": "uint256", + "name": "bptIn", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "amountsOut", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerHelpers.JoinPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "queryJoin", + "outputs": [ + { + "internalType": "uint256", + "name": "bptOut", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IBalancerVotingEscrow.sol/AMO__IBalancerVotingEscrow.json b/apps/dapp/abi/contracts/amo/external/IBalancerVotingEscrow.sol/AMO__IBalancerVotingEscrow.json new file mode 100644 index 000000000..7a5b8e3b0 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IBalancerVotingEscrow.sol/AMO__IBalancerVotingEscrow.json @@ -0,0 +1,29 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__IBalancerVotingEscrow", + "sourceName": "contracts/amo/test/external/IBalancerVotingEscrow.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_unlock_time", + "type": "uint256" + } + ], + "name": "create_lock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IGaugeAdder.sol/AMO__IGaugeAdder.json b/apps/dapp/abi/contracts/amo/external/IGaugeAdder.sol/AMO__IGaugeAdder.json new file mode 100644 index 000000000..656f41b2e --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IGaugeAdder.sol/AMO__IGaugeAdder.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__IGaugeAdder", + "sourceName": "contracts/amo/test/external/IGaugeAdder.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "gauge", + "type": "address" + } + ], + "name": "addEthereumGauge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IGaugeController.sol/AMO__IAuraGaugeController.json b/apps/dapp/abi/contracts/amo/external/IGaugeController.sol/AMO__IAuraGaugeController.json new file mode 100644 index 000000000..3c92abc3b --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IGaugeController.sol/AMO__IAuraGaugeController.json @@ -0,0 +1,105 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__IAuraGaugeController", + "sourceName": "contracts/amo/test/external/IGaugeController.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "int128", + "name": "", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "add_gauge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gauge", + "type": "address" + } + ], + "name": "get_gauge_weight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "vote_for_gauge_weights", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "vote_user_slopes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/ILiquidityGaugeFactory.sol/AMO__ILiquidityGaugeFactory.json b/apps/dapp/abi/contracts/amo/external/ILiquidityGaugeFactory.sol/AMO__ILiquidityGaugeFactory.json new file mode 100644 index 000000000..84c323460 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/ILiquidityGaugeFactory.sol/AMO__ILiquidityGaugeFactory.json @@ -0,0 +1,35 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__ILiquidityGaugeFactory", + "sourceName": "contracts/amo/test/external/ILiquidityGaugeFactory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "relativeWeightCap", + "type": "uint256" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IPoolManagerProxy.sol/AMO__IPoolManagerProxy.json b/apps/dapp/abi/contracts/amo/external/IPoolManagerProxy.sol/AMO__IPoolManagerProxy.json new file mode 100644 index 000000000..7bd139aea --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IPoolManagerProxy.sol/AMO__IPoolManagerProxy.json @@ -0,0 +1,40 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__IPoolManagerProxy", + "sourceName": "contracts/amo/test/external/IPoolManagerProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_lptoken", + "type": "address" + }, + { + "internalType": "address", + "name": "_gauge", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_stashVersion", + "type": "uint256" + } + ], + "name": "addPool", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IPoolManagerV3.sol/AMO__IPoolManagerV3.json b/apps/dapp/abi/contracts/amo/external/IPoolManagerV3.sol/AMO__IPoolManagerV3.json new file mode 100644 index 000000000..9ee64d9f7 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IPoolManagerV3.sol/AMO__IPoolManagerV3.json @@ -0,0 +1,54 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__IPoolManagerV3", + "sourceName": "contracts/amo/test/external/IPoolManagerV3.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_gauge", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_stashVersion", + "type": "uint256" + } + ], + "name": "addPool", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + } + ], + "name": "shutdownPool", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IStashRewards.sol/AMO__IAuraStashRewards.json b/apps/dapp/abi/contracts/amo/external/IStashRewards.sol/AMO__IAuraStashRewards.json new file mode 100644 index 000000000..e3254e31e --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IStashRewards.sol/AMO__IAuraStashRewards.json @@ -0,0 +1,83 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__IAuraStashRewards", + "sourceName": "contracts/amo/test/external/IStashRewards.sol", + "abi": [ + { + "inputs": [], + "name": "claimRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_staker", + "type": "address" + }, + { + "internalType": "address", + "name": "_gauge", + "type": "address" + }, + { + "internalType": "address", + "name": "_rewardFactory", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "processStash", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stashRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/IWeightPool2Tokens.sol/IWeightPool2Tokens.json b/apps/dapp/abi/contracts/amo/external/IWeightPool2Tokens.sol/IWeightPool2Tokens.json new file mode 100644 index 000000000..dda393383 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/IWeightPool2Tokens.sol/IWeightPool2Tokens.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IWeightPool2Tokens", + "sourceName": "contracts/amo/test/external/IWeightPool2Tokens.sol", + "abi": [ + { + "inputs": [], + "name": "getNormalizedWeights", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/external/goerli/Goerli_ILiquidityGaugeFactory.sol/AMO__Goerli_ILiquidityGaugeFactory.json b/apps/dapp/abi/contracts/amo/external/goerli/Goerli_ILiquidityGaugeFactory.sol/AMO__Goerli_ILiquidityGaugeFactory.json new file mode 100644 index 000000000..15faae567 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/external/goerli/Goerli_ILiquidityGaugeFactory.sol/AMO__Goerli_ILiquidityGaugeFactory.json @@ -0,0 +1,49 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMO__Goerli_ILiquidityGaugeFactory", + "sourceName": "contracts/amo/test/external/goerli/Goerli_ILiquidityGaugeFactory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "gauge", + "type": "address" + } + ], + "name": "isGaugeFromFactory", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/helpers/AMOCommon.sol/AMOCommon.json b/apps/dapp/abi/contracts/amo/helpers/AMOCommon.sol/AMOCommon.json new file mode 100644 index 000000000..1224f3a01 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/helpers/AMOCommon.sol/AMOCommon.json @@ -0,0 +1,115 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AMOCommon", + "sourceName": "contracts/amo/helpers/AMOCommon.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "name": "AboveCappedAmount", + "type": "error" + }, + { + "inputs": [], + "name": "HighSlippage", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InsufficientBPTAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "InvalidBPSValue", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBalancerVaultRequest", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptMaxAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableMaxAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "templeMaxAmount", + "type": "uint256" + } + ], + "name": "InvalidMaxAmounts", + "type": "error" + }, + { + "inputs": [], + "name": "NoRebalanceDown", + "type": "error" + }, + { + "inputs": [], + "name": "NoRebalanceUp", + "type": "error" + }, + { + "inputs": [], + "name": "NotEnoughCooldown", + "type": "error" + }, + { + "inputs": [], + "name": "NotOperator", + "type": "error" + }, + { + "inputs": [], + "name": "NotOperatorOrOwner", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyAMO", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroSwapLimit", + "type": "error" + } + ], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d90647fd39903eb8f46014450689f72a3f22693222bd6ce975aaba2374d94d8364736f6c63430008130033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d90647fd39903eb8f46014450689f72a3f22693222bd6ce975aaba2374d94d8364736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/helpers/BalancerPoolHelper.sol/BalancerPoolHelper.json b/apps/dapp/abi/contracts/amo/helpers/BalancerPoolHelper.sol/BalancerPoolHelper.json new file mode 100644 index 000000000..6461c1084 --- /dev/null +++ b/apps/dapp/abi/contracts/amo/helpers/BalancerPoolHelper.sol/BalancerPoolHelper.json @@ -0,0 +1,779 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BalancerPoolHelper", + "sourceName": "contracts/amo/helpers/BalancerPoolHelper.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_balancerVault", + "type": "address" + }, + { + "internalType": "address", + "name": "_balancerHelpers", + "type": "address" + }, + { + "internalType": "address", + "name": "_protocolToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_quoteToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_bptToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_amo", + "type": "address" + }, + { + "internalType": "uint64", + "name": "_protocolTokenIndexInPool", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "_balancerPoolId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "HighSlippage", + "type": "error" + }, + { + "inputs": [], + "name": "NoRebalanceDown", + "type": "error" + }, + { + "inputs": [], + "name": "NoRebalanceUp", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyAMO", + "type": "error" + }, + { + "inputs": [], + "name": "BPS_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PRICE_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "amo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slippageBps", + "type": "uint256" + } + ], + "name": "applySlippage", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "balancerHelpers", + "outputs": [ + { + "internalType": "contract IBalancerHelpers", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerPoolId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerVault", + "outputs": [ + { + "internalType": "contract IBalancerVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bptToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "postRebalanceDelta", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "exitTokenIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "exitPoolToken", + "type": "address" + } + ], + "name": "exitPool", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getBalances", + "outputs": [ + { + "internalType": "uint256[]", + "name": "balances", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPairBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "protocolTokenBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quoteTokenBalance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "spotPriceBefore", + "type": "uint256" + } + ], + "name": "getSlippage", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSpotPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceAboveTpi", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slippage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceAboveTpi", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceAboveTpiUpperBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slippage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceBelowTpi", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceBelowTpi", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceBelowTpiLowerBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBptOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "postRebalanceDelta", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "joinTokenIndex", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "joinPoolToken", + "type": "address" + } + ], + "name": "joinPool", + "outputs": [ + { + "internalType": "uint256", + "name": "bptOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "quoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slippageBps", + "type": "uint256" + } + ], + "name": "proportionalAddLiquidityQuote", + "outputs": [ + { + "internalType": "uint256", + "name": "protocolTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedBptAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBptAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.JoinPoolRequest", + "name": "requestData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slippageBps", + "type": "uint256" + } + ], + "name": "proportionalRemoveLiquidityQuote", + "outputs": [ + { + "internalType": "uint256", + "name": "expectedProtocolTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedQuoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minProtocolTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minQuoteTokenAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.ExitPoolRequest", + "name": "requestData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "protocolToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolTokenIndexInBalancerPool", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quoteToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokensOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "willExitTakePriceAboveTpiUpperBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokensIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "willJoinTakePriceBelowTpiLowerBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokensOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "willQuoteTokenExitTakePriceBelowTpiLowerBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokensIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "willQuoteTokenJoinTakePriceAboveTpiUpperBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6101806040523480156200001257600080fd5b5060405162002f4e38038062002f4e833981016040819052620000359162000096565b610160526001600160a01b0396871660805294861660a05292851660e05290841661010052831660c052909116610120526001600160401b03166101405262000145565b80516001600160a01b03811681146200009157600080fd5b919050565b600080600080600080600080610100898b031215620000b457600080fd5b620000bf8962000079565b9750620000cf60208a0162000079565b9650620000df60408a0162000079565b9550620000ef60608a0162000079565b9450620000ff60808a0162000079565b93506200010f60a08a0162000079565b60c08a01519093506001600160401b03811681146200012d57600080fd5b8092505060e089015190509295985092959890939650565b60805160a05160c05160e05161010051610120516101405161016051612c68620002e66000396000818161046c0152818161053b01528181610ab601528181610dcc015281816112d701526118b701526000818161031c0152818161069b015281816108630152818161097e015281816110c00152818161139b0152818161146a01528181611bcc0152611e9d0152600081816104de01528181610ad801528181610beb015281816112f901526115710152600081816102bc01528181610893015281816108fb015281816110f00152818161115801528181611bf301528181611c5b01528181611ec40152611f2c015260008181610295015281816108b4015281816108da01528181610c440152818161111101528181611137015281816115ca01528181611c1401528181611c3a01528181611ee50152611f0b0152600081816103b3015281816117be015261194701526000818161049b01528181610a8901526112aa0152600081816102490152818161056401528181610d9f015281816116880152818161172701528181611768015261188a0152612c686000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80637b3a475911610104578063db6c581a116100a2578063e3da5a2911610071578063e3da5a29146104bd578063e41de313146104d0578063fa706552146104d9578063ffd051831461050057600080fd5b8063db6c581a14610454578063dbbb64b914610467578063dc76fabc1461048e578063dd0cca0b1461049657600080fd5b8063a4710a90116100de578063a4710a90146103f7578063ac79a3a01461040a578063c470bc201461041d578063d7fc90ea1461043057600080fd5b80637b3a4759146103ae578063841d3e78146103d557806395082d25146103e857600080fd5b806321dcc0501161017157806364293ef51161014b57806364293ef5146103175780636ec2a4fa146103575780637908f4981461036a5780637a23bf601461038d57600080fd5b806321dcc050146102de57806324abfabf146102f15780632974c6781461030457600080fd5b806313e789e4116101ad57806313e789e414610231578063158274a5146102445780631a465fe114610290578063217a4b70146102b757600080fd5b8062113e08146101d35780630affc347146101f15780630c39bcfd14610214575b600080fd5b6101db610513565b6040516101e891906125c7565b60405180910390f35b6102046101ff3660046125da565b61060d565b60405190151581526020016101e8565b61021c610681565b604080519283526020830191909152016101e8565b61020461023f366004612606565b61073c565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b6102046102ec366004612628565b610775565b6102046102ff366004612628565b610787565b610204610312366004612606565b610799565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff90911681526020016101e8565b610204610365366004612606565b6107ac565b61037d610378366004612606565b6107b8565b6040516101e89493929190612753565b6103a061039b3660046127a7565b610bd1565b6040519081526020016101e8565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b6102046103e33660046125da565b610f16565b6103a0670de0b6b3a764000081565b6103a0610405366004612628565b610f8a565b6102046104183660046125da565b610fcd565b6103a061042b366004612606565b611027565b61044361043e366004612606565b61104a565b6040516101e8959493929190612811565b610204610462366004612606565b6114ea565b6103a07f000000000000000000000000000000000000000000000000000000000000000081565b6103a0611521565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b6103a06104cb3660046127a7565b611557565b6103a061271081565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b61020461050e3660046125da565b611a22565b6040517ff94d46680000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f94d466890602401600060405180830381865afa1580156105c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106069190810190612949565b5092915050565b6000806127108361061e8683612a46565b6106289190612a59565b6106329190612a70565b905060008061063f610681565b909250905060006106508883612a46565b9050600083610667670de0b6b3a764000084612a59565b6106719190612a70565b9490941198975050505050505050565b600080600061068e610513565b905067ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156106fb57806001815181106106d3576106d3612aab565b6020026020010151816000815181106106ee576106ee612aab565b6020026020010151610732565b8060008151811061070e5761070e612aab565b60200260200101518160018151811061072957610729612aab565b60200260200101515b9094909350915050565b60008061271061074c8486612a59565b6107569190612a70565b90506107628184612ada565b61076a611521565b109150505b92915050565b600081610780611521565b1192915050565b600081610792611521565b1092915050565b60006107a583836114ea565b9392505050565b60006107a5838361073c565b60008060006107ea60405180608001604052806060815260200160608152602001606081526020016000151581525090565b6000806107f5610681565b915091508060001461081b578061080c8984612a59565b6108169190612a70565b61081d565b875b60408051600280825260608201835292985091906020830190803683375050508352604080516002808252606082018352909160208301908036833750505060208401527f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16156108d8577f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061091b565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b8451805160009061092e5761092e612aab565b60200260200101856000015160018151811061094c5761094c612aab565b73ffffffffffffffffffffffffffffffffffffffff93841660209182029290920101529116905267ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156109aa5787866109ad565b85885b84602001516000815181106109c4576109c4612aab565b6020026020010185602001516001815181106109e2576109e2612aab565b60200260200101828152508281525050506000600184602001516000604051602001610a1093929190612aed565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815285810182905260006060870152517f9ebbf05d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639ebbf05d90610b04907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009081908a90600401612b19565b6000604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b699190810190612b58565b509550610b768689611027565b94506001846020015186604051602001610b9293929190612b9f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152850152509497939650919450925050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c42576040517f1ae67f6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610ca657610ca188878986611a7c565b610cb2565b610cb288878986611b04565b6000610cbf8a8a87611b4f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d539190612bc8565b90506000610d5f611521565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638bdb391390610dfa907f000000000000000000000000000000000000000000000000000000000000000090309033908990600401612b19565b600060405180830381600087803b158015610e1457600080fd5b505af1158015610e28573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000925073ffffffffffffffffffffffffffffffffffffffff881691506370a0823190602401602060405180830381865afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190612bc8565b9050828103945088610ece83610f8a565b1115610f06576040517f4c9b2c5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505098975050505050505050565b60008061271083610f278683612ada565b610f319190612a59565b610f3b9190612a70565b9050600080610f48610681565b90925090506000610f598884612a46565b9050600081610f70670de0b6b3a764000085612a59565b610f7a9190612a70565b9490941098975050505050505050565b600080610f95611521565b90506000838211610fa857818403610fac565b8382035b905083610fbb61271083612a59565b610fc59190612a70565b949350505050565b60008061271083610fde8683612a46565b610fe89190612a59565b610ff29190612a70565b9050600080610fff610681565b909250905060006110108884612ada565b9050600081610667670de0b6b3a764000085612a59565b60006127106110368382612ada565b6110409085612a59565b6107a59190612a70565b60008060008061107d60405180608001604052806060815260200160608152602001606081526020016000151581525090565b60408051600280825260608201835290916020830190803683375050508152604080516002808252606082018352909160208301908036833750505060208201527f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1615611135577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611178565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b8251805160009061118b5761118b612aab565b6020026020010183600001516001815181106111a9576111a9612aab565b602002602001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050506000600188604051602001611231929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815283810182905260006060850152517fc7b2c52c00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063c7b2c52c90611325907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009081908890600401612b19565b6000604051808303816000875af1158015611344573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261138a9190810190612b58565b60208401525067ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156114035781602001516001815181106113d7576113d7612aab565b602002602001015182602001516000815181106113f6576113f6612aab565b6020026020010151611442565b816020015160008151811061141a5761141a612aab565b6020026020010151826020015160018151811061143957611439612aab565b60200260200101515b90965094506114518688611027565b935061145d8588611027565b925067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001615611496578284611499565b83835b83602001516000815181106114b0576114b0612aab565b6020026020010184602001516001815181106114ce576114ce612aab565b6020026020010182815250828152505050509295509295909350565b6000806127106114fa8486612a59565b6115049190612a70565b90506115108184612a46565b611518611521565b11949350505050565b600080600061152e610681565b90925090508161154682670de0b6b3a7640000612a59565b6115509190612a70565b9250505090565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146115c8576040517f1ae67f6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461162c5761162789888888611d8a565b611638565b61163889888888611dd5565b60006116458a858b611e20565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015291925060009185169063dd62ed3e90604401602060405180830381865afa1580156116dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117019190612bc8565b90508a81101561178d5761174c73ffffffffffffffffffffffffffffffffffffffff85167f000000000000000000000000000000000000000000000000000000000000000083612008565b61178d73ffffffffffffffffffffffffffffffffffffffff85167f00000000000000000000000000000000000000000000000000000000000000008d61220e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561181a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183e9190612bc8565b9050600061184a611521565b6040517fb95cac2800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b95cac28906118e5907f000000000000000000000000000000000000000000000000000000000000000090309033908a90600401612b19565b600060405180830381600087803b1580156118ff57600080fd5b505af1158015611913573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152600092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691506370a0823190602401602060405180830381865afa1580156119a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c89190612bc8565b90508281039550886119d983610f8a565b1115611a11576040517f4c9b2c5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505098975050505050505050565b60008061271083611a338683612ada565b611a3d9190612a59565b611a479190612a70565b9050600080611a54610681565b90925090506000611a658883612ada565b9050600083610f70670de0b6b3a764000084612a59565b611a868382610799565b611abc576040517ffab904b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac7848383611a22565b15611afe576040517f4c9b2c5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611b0e82826107ac565b611b44576040517fb9e2326b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac7848483610fcd565b611b7c60405180608001604052806060815260200160608152602001606081526020016000151581525090565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050905067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001615611c38577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611c7b565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b83600081518110611c8e57611c8e612aab565b6020026020010184600181518110611ca857611ca8612aab565b73ffffffffffffffffffffffffffffffffffffffff9384166020918202929092010152911690528315611cdd57600085611ce1565b8460005b82600081518110611cf457611cf4612aab565b6020026020010183600181518110611d0e57611d0e612aab565b60209081029190910181019290925291909152604080516000928101839052908101889052606081018690526080015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815293855260208501929092525090820152600060608201529392505050565b611d9482826107ac565b611dca576040517fb9e2326b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac784848361060d565b611ddf8382610799565b611e15576040517ffab904b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac7848383610f16565b611e4d60405180608001604052806060815260200160608152602001606081526020016000151581525090565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050905067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001615611f09577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611f4c565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b83600081518110611f5f57611f5f612aab565b6020026020010184600181518110611f7957611f79612aab565b73ffffffffffffffffffffffffffffffffffffffff9384166020918202929092010152911690528415611fae57600086611fb2565b8560005b82600081518110611fc557611fc5612aab565b6020026020010183600181518110611fdf57611fdf612aab565b6020026020010182815250828152505050600060018286604051602001611d3e93929190612b9f565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190612bc8565b905081811015612139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5361666545524332303a2064656372656173656420616c6c6f77616e6365206260448201527f656c6f77207a65726f000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff841660248201528282036044820152611afe9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612307565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a89190612bc8565b9050611afe847f095ea7b300000000000000000000000000000000000000000000000000000000856122da8686612a46565b60405173ffffffffffffffffffffffffffffffffffffffff9092166024830152604482015260640161218c565b6000612369826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661241b9092919063ffffffff16565b905080516000148061238a57508080602001905181019061238a9190612be1565b612416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401612130565b505050565b6060610fc58484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161244f9190612c03565b60006040518083038185875af1925050503d806000811461248c576040519150601f19603f3d011682016040523d82523d6000602084013e612491565b606091505b50915091506124a2878383876124ad565b979650505050505050565b6060831561254357825160000361253c5773ffffffffffffffffffffffffffffffffffffffff85163b61253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401612130565b5081610fc5565b610fc583838151156125585781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121309190612c1f565b600081518084526020808501945080840160005b838110156125bc578151875295820195908201906001016125a0565b509495945050505050565b6020815260006107a5602083018461258c565b6000806000606084860312156125ef57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561261957600080fd5b50508035926020909101359150565b60006020828403121561263a57600080fd5b5035919050565b60005b8381101561265c578181015183820152602001612644565b50506000910152565b6000815180845261267d816020860160208601612641565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561270157835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016126cf565b50508285015191508581038387015261271a818361258c565b92505050604083015184820360408601526127358282612665565b915050606083015161274b606086018215159052565b509392505050565b84815283602082015282604082015260806060820152600061277860808301846126af565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146127a457600080fd5b50565b600080600080600080600080610100898b0312156127c457600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925060c0890135915060e089013561280081612782565b809150509295985092959890939650565b85815284602082015283604082015282606082015260a0608082015260006124a260a08301846126af565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156128b2576128b261283c565b604052919050565b600067ffffffffffffffff8211156128d4576128d461283c565b5060051b60200190565b600082601f8301126128ef57600080fd5b815160206129046128ff836128ba565b61286b565b82815260059290921b8401810191818101908684111561292357600080fd5b8286015b8481101561293e5780518352918301918301612927565b509695505050505050565b60008060006060848603121561295e57600080fd5b835167ffffffffffffffff8082111561297657600080fd5b818601915086601f83011261298a57600080fd5b8151602061299a6128ff836128ba565b82815260059290921b8401810191818101908a8411156129b957600080fd5b948201945b838610156129e05785516129d181612782565b825294820194908201906129be565b918901519197509093505050808211156129f957600080fd5b50612a06868287016128de565b925050604084015190509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076f5761076f612a17565b808202811582820484141761076f5761076f612a17565b600082612aa6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561076f5761076f612a17565b838152606060208201526000612b06606083018561258c565b905060ff83166040830152949350505050565b848152600073ffffffffffffffffffffffffffffffffffffffff80861660208401528085166040840152506080606083015261277860808301846126af565b60008060408385031215612b6b57600080fd5b82519150602083015167ffffffffffffffff811115612b8957600080fd5b612b95858286016128de565b9150509250929050565b838152606060208201526000612bb8606083018561258c565b9050826040830152949350505050565b600060208284031215612bda57600080fd5b5051919050565b600060208284031215612bf357600080fd5b815180151581146107a557600080fd5b60008251612c15818460208701612641565b9190910192915050565b6020815260006107a5602083018461266556fea264697066735822122065bc6323d437f3a154f1485032ddbfe097b3bfc93954b6030c2211215f8f35db64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ce5760003560e01c80637b3a475911610104578063db6c581a116100a2578063e3da5a2911610071578063e3da5a29146104bd578063e41de313146104d0578063fa706552146104d9578063ffd051831461050057600080fd5b8063db6c581a14610454578063dbbb64b914610467578063dc76fabc1461048e578063dd0cca0b1461049657600080fd5b8063a4710a90116100de578063a4710a90146103f7578063ac79a3a01461040a578063c470bc201461041d578063d7fc90ea1461043057600080fd5b80637b3a4759146103ae578063841d3e78146103d557806395082d25146103e857600080fd5b806321dcc0501161017157806364293ef51161014b57806364293ef5146103175780636ec2a4fa146103575780637908f4981461036a5780637a23bf601461038d57600080fd5b806321dcc050146102de57806324abfabf146102f15780632974c6781461030457600080fd5b806313e789e4116101ad57806313e789e414610231578063158274a5146102445780631a465fe114610290578063217a4b70146102b757600080fd5b8062113e08146101d35780630affc347146101f15780630c39bcfd14610214575b600080fd5b6101db610513565b6040516101e891906125c7565b60405180910390f35b6102046101ff3660046125da565b61060d565b60405190151581526020016101e8565b61021c610681565b604080519283526020830191909152016101e8565b61020461023f366004612606565b61073c565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b6102046102ec366004612628565b610775565b6102046102ff366004612628565b610787565b610204610312366004612606565b610799565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff90911681526020016101e8565b610204610365366004612606565b6107ac565b61037d610378366004612606565b6107b8565b6040516101e89493929190612753565b6103a061039b3660046127a7565b610bd1565b6040519081526020016101e8565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b6102046103e33660046125da565b610f16565b6103a0670de0b6b3a764000081565b6103a0610405366004612628565b610f8a565b6102046104183660046125da565b610fcd565b6103a061042b366004612606565b611027565b61044361043e366004612606565b61104a565b6040516101e8959493929190612811565b610204610462366004612606565b6114ea565b6103a07f000000000000000000000000000000000000000000000000000000000000000081565b6103a0611521565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b6103a06104cb3660046127a7565b611557565b6103a061271081565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b61020461050e3660046125da565b611a22565b6040517ff94d46680000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f94d466890602401600060405180830381865afa1580156105c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106069190810190612949565b5092915050565b6000806127108361061e8683612a46565b6106289190612a59565b6106329190612a70565b905060008061063f610681565b909250905060006106508883612a46565b9050600083610667670de0b6b3a764000084612a59565b6106719190612a70565b9490941198975050505050505050565b600080600061068e610513565b905067ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156106fb57806001815181106106d3576106d3612aab565b6020026020010151816000815181106106ee576106ee612aab565b6020026020010151610732565b8060008151811061070e5761070e612aab565b60200260200101518160018151811061072957610729612aab565b60200260200101515b9094909350915050565b60008061271061074c8486612a59565b6107569190612a70565b90506107628184612ada565b61076a611521565b109150505b92915050565b600081610780611521565b1192915050565b600081610792611521565b1092915050565b60006107a583836114ea565b9392505050565b60006107a5838361073c565b60008060006107ea60405180608001604052806060815260200160608152602001606081526020016000151581525090565b6000806107f5610681565b915091508060001461081b578061080c8984612a59565b6108169190612a70565b61081d565b875b60408051600280825260608201835292985091906020830190803683375050508352604080516002808252606082018352909160208301908036833750505060208401527f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16156108d8577f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061091b565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b8451805160009061092e5761092e612aab565b60200260200101856000015160018151811061094c5761094c612aab565b73ffffffffffffffffffffffffffffffffffffffff93841660209182029290920101529116905267ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156109aa5787866109ad565b85885b84602001516000815181106109c4576109c4612aab565b6020026020010185602001516001815181106109e2576109e2612aab565b60200260200101828152508281525050506000600184602001516000604051602001610a1093929190612aed565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815285810182905260006060870152517f9ebbf05d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639ebbf05d90610b04907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009081908a90600401612b19565b6000604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b699190810190612b58565b509550610b768689611027565b94506001846020015186604051602001610b9293929190612b9f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152850152509497939650919450925050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c42576040517f1ae67f6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610ca657610ca188878986611a7c565b610cb2565b610cb288878986611b04565b6000610cbf8a8a87611b4f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d539190612bc8565b90506000610d5f611521565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638bdb391390610dfa907f000000000000000000000000000000000000000000000000000000000000000090309033908990600401612b19565b600060405180830381600087803b158015610e1457600080fd5b505af1158015610e28573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000925073ffffffffffffffffffffffffffffffffffffffff881691506370a0823190602401602060405180830381865afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190612bc8565b9050828103945088610ece83610f8a565b1115610f06576040517f4c9b2c5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505098975050505050505050565b60008061271083610f278683612ada565b610f319190612a59565b610f3b9190612a70565b9050600080610f48610681565b90925090506000610f598884612a46565b9050600081610f70670de0b6b3a764000085612a59565b610f7a9190612a70565b9490941098975050505050505050565b600080610f95611521565b90506000838211610fa857818403610fac565b8382035b905083610fbb61271083612a59565b610fc59190612a70565b949350505050565b60008061271083610fde8683612a46565b610fe89190612a59565b610ff29190612a70565b9050600080610fff610681565b909250905060006110108884612ada565b9050600081610667670de0b6b3a764000085612a59565b60006127106110368382612ada565b6110409085612a59565b6107a59190612a70565b60008060008061107d60405180608001604052806060815260200160608152602001606081526020016000151581525090565b60408051600280825260608201835290916020830190803683375050508152604080516002808252606082018352909160208301908036833750505060208201527f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1615611135577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611178565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b8251805160009061118b5761118b612aab565b6020026020010183600001516001815181106111a9576111a9612aab565b602002602001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050506000600188604051602001611231929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815283810182905260006060850152517fc7b2c52c00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063c7b2c52c90611325907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009081908890600401612b19565b6000604051808303816000875af1158015611344573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261138a9190810190612b58565b60208401525067ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156114035781602001516001815181106113d7576113d7612aab565b602002602001015182602001516000815181106113f6576113f6612aab565b6020026020010151611442565b816020015160008151811061141a5761141a612aab565b6020026020010151826020015160018151811061143957611439612aab565b60200260200101515b90965094506114518688611027565b935061145d8588611027565b925067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001615611496578284611499565b83835b83602001516000815181106114b0576114b0612aab565b6020026020010184602001516001815181106114ce576114ce612aab565b6020026020010182815250828152505050509295509295909350565b6000806127106114fa8486612a59565b6115049190612a70565b90506115108184612a46565b611518611521565b11949350505050565b600080600061152e610681565b90925090508161154682670de0b6b3a7640000612a59565b6115509190612a70565b9250505090565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146115c8576040517f1ae67f6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461162c5761162789888888611d8a565b611638565b61163889888888611dd5565b60006116458a858b611e20565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015291925060009185169063dd62ed3e90604401602060405180830381865afa1580156116dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117019190612bc8565b90508a81101561178d5761174c73ffffffffffffffffffffffffffffffffffffffff85167f000000000000000000000000000000000000000000000000000000000000000083612008565b61178d73ffffffffffffffffffffffffffffffffffffffff85167f00000000000000000000000000000000000000000000000000000000000000008d61220e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561181a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183e9190612bc8565b9050600061184a611521565b6040517fb95cac2800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b95cac28906118e5907f000000000000000000000000000000000000000000000000000000000000000090309033908a90600401612b19565b600060405180830381600087803b1580156118ff57600080fd5b505af1158015611913573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152600092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691506370a0823190602401602060405180830381865afa1580156119a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c89190612bc8565b90508281039550886119d983610f8a565b1115611a11576040517f4c9b2c5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505098975050505050505050565b60008061271083611a338683612ada565b611a3d9190612a59565b611a479190612a70565b9050600080611a54610681565b90925090506000611a658883612ada565b9050600083610f70670de0b6b3a764000084612a59565b611a868382610799565b611abc576040517ffab904b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac7848383611a22565b15611afe576040517f4c9b2c5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611b0e82826107ac565b611b44576040517fb9e2326b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac7848483610fcd565b611b7c60405180608001604052806060815260200160608152602001606081526020016000151581525090565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050905067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001615611c38577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611c7b565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b83600081518110611c8e57611c8e612aab565b6020026020010184600181518110611ca857611ca8612aab565b73ffffffffffffffffffffffffffffffffffffffff9384166020918202929092010152911690528315611cdd57600085611ce1565b8460005b82600081518110611cf457611cf4612aab565b6020026020010183600181518110611d0e57611d0e612aab565b60209081029190910181019290925291909152604080516000928101839052908101889052606081018690526080015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815293855260208501929092525090820152600060608201529392505050565b611d9482826107ac565b611dca576040517fb9e2326b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac784848361060d565b611ddf8382610799565b611e15576040517ffab904b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac7848383610f16565b611e4d60405180608001604052806060815260200160608152602001606081526020016000151581525090565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050905067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001615611f09577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611f4c565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b83600081518110611f5f57611f5f612aab565b6020026020010184600181518110611f7957611f79612aab565b73ffffffffffffffffffffffffffffffffffffffff9384166020918202929092010152911690528415611fae57600086611fb2565b8560005b82600081518110611fc557611fc5612aab565b6020026020010183600181518110611fdf57611fdf612aab565b6020026020010182815250828152505050600060018286604051602001611d3e93929190612b9f565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190612bc8565b905081811015612139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5361666545524332303a2064656372656173656420616c6c6f77616e6365206260448201527f656c6f77207a65726f000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff841660248201528282036044820152611afe9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612307565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a89190612bc8565b9050611afe847f095ea7b300000000000000000000000000000000000000000000000000000000856122da8686612a46565b60405173ffffffffffffffffffffffffffffffffffffffff9092166024830152604482015260640161218c565b6000612369826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661241b9092919063ffffffff16565b905080516000148061238a57508080602001905181019061238a9190612be1565b612416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401612130565b505050565b6060610fc58484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161244f9190612c03565b60006040518083038185875af1925050503d806000811461248c576040519150601f19603f3d011682016040523d82523d6000602084013e612491565b606091505b50915091506124a2878383876124ad565b979650505050505050565b6060831561254357825160000361253c5773ffffffffffffffffffffffffffffffffffffffff85163b61253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401612130565b5081610fc5565b610fc583838151156125585781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121309190612c1f565b600081518084526020808501945080840160005b838110156125bc578151875295820195908201906001016125a0565b509495945050505050565b6020815260006107a5602083018461258c565b6000806000606084860312156125ef57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561261957600080fd5b50508035926020909101359150565b60006020828403121561263a57600080fd5b5035919050565b60005b8381101561265c578181015183820152602001612644565b50506000910152565b6000815180845261267d816020860160208601612641565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561270157835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016126cf565b50508285015191508581038387015261271a818361258c565b92505050604083015184820360408601526127358282612665565b915050606083015161274b606086018215159052565b509392505050565b84815283602082015282604082015260806060820152600061277860808301846126af565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146127a457600080fd5b50565b600080600080600080600080610100898b0312156127c457600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925060c0890135915060e089013561280081612782565b809150509295985092959890939650565b85815284602082015283604082015282606082015260a0608082015260006124a260a08301846126af565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156128b2576128b261283c565b604052919050565b600067ffffffffffffffff8211156128d4576128d461283c565b5060051b60200190565b600082601f8301126128ef57600080fd5b815160206129046128ff836128ba565b61286b565b82815260059290921b8401810191818101908684111561292357600080fd5b8286015b8481101561293e5780518352918301918301612927565b509695505050505050565b60008060006060848603121561295e57600080fd5b835167ffffffffffffffff8082111561297657600080fd5b818601915086601f83011261298a57600080fd5b8151602061299a6128ff836128ba565b82815260059290921b8401810191818101908a8411156129b957600080fd5b948201945b838610156129e05785516129d181612782565b825294820194908201906129be565b918901519197509093505050808211156129f957600080fd5b50612a06868287016128de565b925050604084015190509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076f5761076f612a17565b808202811582820484141761076f5761076f612a17565b600082612aa6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561076f5761076f612a17565b838152606060208201526000612b06606083018561258c565b905060ff83166040830152949350505050565b848152600073ffffffffffffffffffffffffffffffffffffffff80861660208401528085166040840152506080606083015261277860808301846126af565b60008060408385031215612b6b57600080fd5b82519150602083015167ffffffffffffffff811115612b8957600080fd5b612b95858286016128de565b9150509250929050565b838152606060208201526000612bb8606083018561258c565b9050826040830152949350505050565b600060208284031215612bda57600080fd5b5051919050565b600060208284031215612bf357600080fd5b815180151581146107a557600080fd5b60008251612c15818460208701612641565b9190910192915050565b6020815260006107a5602083018461266556fea264697066735822122065bc6323d437f3a154f1485032ddbfe097b3bfc93954b6030c2211215f8f35db64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/amo/helpers/BalancerPoolHelper.sol/IWeightPool2Tokens.json b/apps/dapp/abi/contracts/amo/helpers/BalancerPoolHelper.sol/IWeightPool2Tokens.json new file mode 100644 index 000000000..501ba9c8e --- /dev/null +++ b/apps/dapp/abi/contracts/amo/helpers/BalancerPoolHelper.sol/IWeightPool2Tokens.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IWeightPool2Tokens", + "sourceName": "contracts/amo/helpers/BalancerPoolHelper.sol", + "abi": [ + { + "inputs": [], + "name": "getNormalizedWeights", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/common/CommonEventsAndErrors.sol/CommonEventsAndErrors.json b/apps/dapp/abi/contracts/common/CommonEventsAndErrors.sol/CommonEventsAndErrors.json new file mode 100644 index 000000000..625c477c5 --- /dev/null +++ b/apps/dapp/abi/contracts/common/CommonEventsAndErrors.sol/CommonEventsAndErrors.json @@ -0,0 +1,109 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CommonEventsAndErrors", + "sourceName": "contracts/common/CommonEventsAndErrors.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AccountBlacklisted", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "inputs": [], + "name": "Unimplemented", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRecovered", + "type": "event" + } + ], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eb77d6e56c55bd974c42b7dc2fd48ae49631e32ed5b05025fa77173fb10b4bcd64736f6c63430008130033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eb77d6e56c55bd974c42b7dc2fd48ae49631e32ed5b05025fa77173fb10b4bcd64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/common/SafeCast.sol/SafeCast.json b/apps/dapp/abi/contracts/common/SafeCast.sol/SafeCast.json new file mode 100644 index 000000000..c76c823e2 --- /dev/null +++ b/apps/dapp/abi/contracts/common/SafeCast.sol/SafeCast.json @@ -0,0 +1,22 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeCast", + "sourceName": "contracts/common/SafeCast.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + } + ], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202842a6d8c93d83e19197f6f43972dc7a601aa916cc7b0c826cf7273474c43f8e64736f6c63430008130033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202842a6d8c93d83e19197f6f43972dc7a601aa916cc7b0c826cf7273474c43f8e64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/Exposure.sol/Exposure.json b/apps/dapp/abi/contracts/core/Exposure.sol/Exposure.json new file mode 100644 index 000000000..a744b8efc --- /dev/null +++ b/apps/dapp/abi/contracts/core/Exposure.sol/Exposure.json @@ -0,0 +1,701 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Exposure", + "sourceName": "contracts/core/Exposure.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "contract IERC20", + "name": "_revalToken", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldVal", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newVal", + "type": "uint256" + } + ], + "name": "DecreaseReval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldVal", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newVal", + "type": "uint256" + } + ], + "name": "IncreaseReval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "revalToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Redeem", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + } + ], + "name": "SetLiquidator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "state", + "type": "bool" + } + ], + "name": "SetMinterState", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "amountPerShare", + "outputs": [ + { + "internalType": "uint256", + "name": "p", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "q", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "canMint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "decreaseReval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "increaseReval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "liquidator", + "outputs": [ + { + "internalType": "contract ILiquidator", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "redeem", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "redeemAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "reval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "revalToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILiquidator", + "name": "_liquidator", + "type": "address" + } + ], + "name": "setLiqidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bool", + "name": "state", + "type": "bool" + } + ], + "name": "setMinterState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "shareBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + } + ], + "name": "toSharesAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "sharesAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sharesAmount", + "type": "uint256" + } + ], + "name": "toTokenAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001bca38038062001bca8339810160408190526200003491620001a0565b828262000041336200008b565b60046200004f8382620002bc565b5060056200005e8282620002bc565b5050600880546001600160a01b0319166001600160a01b0393909316929092179091555062000388915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200010357600080fd5b81516001600160401b0380821115620001205762000120620000db565b604051601f8301601f19908116603f011681019082821181831017156200014b576200014b620000db565b816040528381526020925086838588010111156200016857600080fd5b600091505b838210156200018c57858201830151818301840152908201906200016d565b600093810190920192909252949350505050565b600080600060608486031215620001b657600080fd5b83516001600160401b0380821115620001ce57600080fd5b620001dc87838801620000f1565b94506020860151915080821115620001f357600080fd5b506200020286828701620000f1565b604086015190935090506001600160a01b03811681146200022257600080fd5b809150509250925092565b600181811c908216806200024257607f821691505b6020821081036200026357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b757600081815260208120601f850160051c81016020861015620002925750805b601f850160051c820191505b81811015620002b3578281556001016200029e565b5050505b505050565b81516001600160401b03811115620002d857620002d8620000db565b620002f081620002e984546200022d565b8462000269565b602080601f8311600181146200032857600084156200030f5750858301515b600019600386901b1c1916600185901b178555620002b3565b600085815260208120601f198616915b82811015620003595788860151825594840194600190910190840162000338565b5085821015620003785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61183280620003986000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063715018a611610104578063a746f93a116100a2578063be040fb011610071578063be040fb014610420578063c2ba474414610428578063dd62ed3e1461044b578063f2fde38b1461049157600080fd5b8063a746f93a146103d4578063a9059cbb146103e7578063ae85d641146103fa578063b0ff11061461040d57600080fd5b80638da5cb5b116100de5780638da5cb5b1461038857806395d89b41146103a657806398275593146103ae578063a457c2d7146103c157600080fd5b8063715018a6146103435780637c5a227c1461034b578063873924e41461036857600080fd5b8063313ce5671161017c5780634046ebae1161014b5780634046ebae146102b857806340c10f19146102fd5780634473ad521461031057806370a082311461033057600080fd5b8063313ce5671461028457806339509351146102935780633a98ef39146102a65780633f3a0c5b146102af57600080fd5b8063095ea7b3116101b8578063095ea7b314610225578063174e4ea61461024857806318160ddd1461026957806323b872dd1461027157600080fd5b8063057ac848146101df578063064c97d6146101f457806306fdde0314610207575b600080fd5b6101f26101ed366004611539565b6104a4565b005b6101f2610202366004611539565b610506565b61020f610560565b60405161021c9190611552565b60405180910390f35b6102386102333660046115e0565b6105f2565b604051901515815260200161021c565b61025b610256366004611539565b61060c565b60405190815260200161021c565b61025b61063b565b61023861027f36600461160c565b61064d565b6040516012815260200161021c565b6102386102a13660046115e0565b610671565b61025b60065481565b61025b60095481565b600b546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6101f261030b3660046115e0565b6106bd565b61025b61031e36600461164d565b60076020526000908152604090205481565b61025b61033e36600461164d565b610760565b6101f261078f565b6103536107a3565b6040805192835260208301919091520161021c565b6008546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff166102d8565b61020f6107c6565b6101f26103bc366004611671565b6107d5565b6102386103cf3660046115e0565b610900565b6101f26103e23660046116a1565b6109d1565b6102386103f53660046115e0565b610a60565b6101f261040836600461164d565b610a6e565b61025b61041b366004611539565b610aef565b6101f2610b0c565b61023861043636600461164d565b600a6020526000908152604090205460ff1681565b61025b6104593660046116d4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b6101f261049f36600461164d565b610b1e565b6104ac610bd5565b6009805490829060006104bf8385611731565b90915550506009546040805183815260208101929092527fa59e96b3c1d252b5b2fd20d08a77732f3af73142db0af5e50ced94b558c7fa0591015b60405180910390a15050565b61050e610bd5565b6009805490829060006105218385611744565b90915550506009546040805183815260208101929092527f307076957a8ce6e01b7d381f303646d1011fb16a9842dfa0859a9eddfd312e4291016104fa565b60606004805461056f90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461059b90611757565b80156105e85780601f106105bd576101008083540402835291602001916105e8565b820191906000526020600020905b8154815290600101906020018083116105cb57829003601f168201915b5050505050905090565b600033610600818585610c56565b60019150505b92915050565b60008060006106196107a3565b90925090508061062983866117aa565b61063391906117c1565b949350505050565b600061064860065461060c565b905090565b60003361065b858285610e0a565b610666858585610ee1565b506001949350505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060090829086906106b8908790611731565b610c56565b336000908152600a602052604090205460ff1661073b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4578706f737572653a2063616c6c6572206973206e6f742061207661756c740060448201526064015b60405180910390fd5b61074582826111a4565b80600960008282546107579190611731565b90915550505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120546106069061060c565b610797610bd5565b6107a160006112ca565b565b60095460065460008290036107b757600191505b806000036107c25750805b9091565b60606005805461056f90611757565b6107df338361133f565b81600960008282546107f19190611744565b9091555050600b5473ffffffffffffffffffffffffffffffffffffffff16156108a157600b546040517f4d4c23a80000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff838116602483015290911690634d4c23a890604401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050505b6008546040805173ffffffffffffffffffffffffffffffffffffffff928316815233602082015291831690820152606081018390527fee02732fab40ece8284c756220846dff4b8d32058b86b35b4f0459bf172fcef0906080016104fa565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610732565b6106668286868403610c56565b6109d9610bd5565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600a602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f73d5b2f10126b99916a4c71d591a354f52ed52ca3b0278eaf584e35220addb7791016104fa565b600033610600818585610ee1565b610a76610bd5565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f111c6aeb2006d748bdae2ddf082866e6ce7eb3d48ef324b5d9547570f5694e4f9060200160405180910390a150565b6000806000610afc6107a3565b90925090508161062982866117aa565b6107a1610b1833610760565b336107d5565b610b26610bd5565b73ffffffffffffffffffffffffffffffffffffffff8116610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610732565b610bd2816112ca565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610732565b73ffffffffffffffffffffffffffffffffffffffff8316610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610edb5781811015610ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610732565b610edb8484848403610c56565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120549061105783610aef565b9050808210156110e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260076020526040808220805485900390559186168152908120805483929061112f908490611731565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161119591815260200190565b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610732565b600061122c82610aef565b905080600660008282546112409190611731565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120805483929061127a908490611731565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610dfd565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff82166113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120549061141283610aef565b9050808210156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208284039055600680548392906114e0908490611744565b909155505060405183815260009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b60006020828403121561154b57600080fd5b5035919050565b600060208083528351808285015260005b8181101561157f57858101830151858201604001528201611563565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bd257600080fd5b600080604083850312156115f357600080fd5b82356115fe816115be565b946020939093013593505050565b60008060006060848603121561162157600080fd5b833561162c816115be565b9250602084013561163c816115be565b929592945050506040919091013590565b60006020828403121561165f57600080fd5b813561166a816115be565b9392505050565b6000806040838503121561168457600080fd5b823591506020830135611696816115be565b809150509250929050565b600080604083850312156116b457600080fd5b82356116bf816115be565b91506020830135801515811461169657600080fd5b600080604083850312156116e757600080fd5b82356116f2816115be565b91506020830135611696816115be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561060657610606611702565b8181038181111561060657610606611702565b600181811c9082168061176b57607f821691505b6020821081036117a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808202811582820484141761060657610606611702565b6000826117f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122023d50523323278d5d51dbe41fe9be37b11c00f4d77ff9097ffba9f3a850c9a6a64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c8063715018a611610104578063a746f93a116100a2578063be040fb011610071578063be040fb014610420578063c2ba474414610428578063dd62ed3e1461044b578063f2fde38b1461049157600080fd5b8063a746f93a146103d4578063a9059cbb146103e7578063ae85d641146103fa578063b0ff11061461040d57600080fd5b80638da5cb5b116100de5780638da5cb5b1461038857806395d89b41146103a657806398275593146103ae578063a457c2d7146103c157600080fd5b8063715018a6146103435780637c5a227c1461034b578063873924e41461036857600080fd5b8063313ce5671161017c5780634046ebae1161014b5780634046ebae146102b857806340c10f19146102fd5780634473ad521461031057806370a082311461033057600080fd5b8063313ce5671461028457806339509351146102935780633a98ef39146102a65780633f3a0c5b146102af57600080fd5b8063095ea7b3116101b8578063095ea7b314610225578063174e4ea61461024857806318160ddd1461026957806323b872dd1461027157600080fd5b8063057ac848146101df578063064c97d6146101f457806306fdde0314610207575b600080fd5b6101f26101ed366004611539565b6104a4565b005b6101f2610202366004611539565b610506565b61020f610560565b60405161021c9190611552565b60405180910390f35b6102386102333660046115e0565b6105f2565b604051901515815260200161021c565b61025b610256366004611539565b61060c565b60405190815260200161021c565b61025b61063b565b61023861027f36600461160c565b61064d565b6040516012815260200161021c565b6102386102a13660046115e0565b610671565b61025b60065481565b61025b60095481565b600b546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6101f261030b3660046115e0565b6106bd565b61025b61031e36600461164d565b60076020526000908152604090205481565b61025b61033e36600461164d565b610760565b6101f261078f565b6103536107a3565b6040805192835260208301919091520161021c565b6008546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff166102d8565b61020f6107c6565b6101f26103bc366004611671565b6107d5565b6102386103cf3660046115e0565b610900565b6101f26103e23660046116a1565b6109d1565b6102386103f53660046115e0565b610a60565b6101f261040836600461164d565b610a6e565b61025b61041b366004611539565b610aef565b6101f2610b0c565b61023861043636600461164d565b600a6020526000908152604090205460ff1681565b61025b6104593660046116d4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b6101f261049f36600461164d565b610b1e565b6104ac610bd5565b6009805490829060006104bf8385611731565b90915550506009546040805183815260208101929092527fa59e96b3c1d252b5b2fd20d08a77732f3af73142db0af5e50ced94b558c7fa0591015b60405180910390a15050565b61050e610bd5565b6009805490829060006105218385611744565b90915550506009546040805183815260208101929092527f307076957a8ce6e01b7d381f303646d1011fb16a9842dfa0859a9eddfd312e4291016104fa565b60606004805461056f90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461059b90611757565b80156105e85780601f106105bd576101008083540402835291602001916105e8565b820191906000526020600020905b8154815290600101906020018083116105cb57829003601f168201915b5050505050905090565b600033610600818585610c56565b60019150505b92915050565b60008060006106196107a3565b90925090508061062983866117aa565b61063391906117c1565b949350505050565b600061064860065461060c565b905090565b60003361065b858285610e0a565b610666858585610ee1565b506001949350505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060090829086906106b8908790611731565b610c56565b336000908152600a602052604090205460ff1661073b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4578706f737572653a2063616c6c6572206973206e6f742061207661756c740060448201526064015b60405180910390fd5b61074582826111a4565b80600960008282546107579190611731565b90915550505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120546106069061060c565b610797610bd5565b6107a160006112ca565b565b60095460065460008290036107b757600191505b806000036107c25750805b9091565b60606005805461056f90611757565b6107df338361133f565b81600960008282546107f19190611744565b9091555050600b5473ffffffffffffffffffffffffffffffffffffffff16156108a157600b546040517f4d4c23a80000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff838116602483015290911690634d4c23a890604401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050505b6008546040805173ffffffffffffffffffffffffffffffffffffffff928316815233602082015291831690820152606081018390527fee02732fab40ece8284c756220846dff4b8d32058b86b35b4f0459bf172fcef0906080016104fa565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610732565b6106668286868403610c56565b6109d9610bd5565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600a602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f73d5b2f10126b99916a4c71d591a354f52ed52ca3b0278eaf584e35220addb7791016104fa565b600033610600818585610ee1565b610a76610bd5565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f111c6aeb2006d748bdae2ddf082866e6ce7eb3d48ef324b5d9547570f5694e4f9060200160405180910390a150565b6000806000610afc6107a3565b90925090508161062982866117aa565b6107a1610b1833610760565b336107d5565b610b26610bd5565b73ffffffffffffffffffffffffffffffffffffffff8116610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610732565b610bd2816112ca565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610732565b73ffffffffffffffffffffffffffffffffffffffff8316610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610edb5781811015610ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610732565b610edb8484848403610c56565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120549061105783610aef565b9050808210156110e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260076020526040808220805485900390559186168152908120805483929061112f908490611731565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161119591815260200190565b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610732565b600061122c82610aef565b905080600660008282546112409190611731565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120805483929061127a908490611731565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610dfd565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff82166113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120549061141283610aef565b9050808210156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208284039055600680548392906114e0908490611744565b909155505060405183815260009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b60006020828403121561154b57600080fd5b5035919050565b600060208083528351808285015260005b8181101561157f57858101830151858201604001528201611563565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bd257600080fd5b600080604083850312156115f357600080fd5b82356115fe816115be565b946020939093013593505050565b60008060006060848603121561162157600080fd5b833561162c816115be565b9250602084013561163c816115be565b929592945050506040919091013590565b60006020828403121561165f57600080fd5b813561166a816115be565b9392505050565b6000806040838503121561168457600080fd5b823591506020830135611696816115be565b809150509250929050565b600080604083850312156116b457600080fd5b82356116bf816115be565b91506020830135801515811461169657600080fd5b600080604083850312156116e757600080fd5b82356116f2816115be565b91506020830135611696816115be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561060657610606611702565b8181038181111561060657610606611702565b600181811c9082168061176b57607f821691505b6020821081036117a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808202811582820484141761060657610606611702565b6000826117f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122023d50523323278d5d51dbe41fe9be37b11c00f4d77ff9097ffba9f3a850c9a6a64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/Exposure.sol/ILiquidator.json b/apps/dapp/abi/contracts/core/Exposure.sol/ILiquidator.json new file mode 100644 index 000000000..1cfb929e3 --- /dev/null +++ b/apps/dapp/abi/contracts/core/Exposure.sol/ILiquidator.json @@ -0,0 +1,29 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ILiquidator", + "sourceName": "contracts/core/Exposure.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "toAccount", + "type": "address" + } + ], + "name": "toTemple", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/JoiningFee.sol/JoiningFee.json b/apps/dapp/abi/contracts/core/JoiningFee.sol/JoiningFee.json new file mode 100644 index 000000000..9c7870b4a --- /dev/null +++ b/apps/dapp/abi/contracts/core/JoiningFee.sol/JoiningFee.json @@ -0,0 +1,172 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "JoiningFee", + "sourceName": "contracts/core/JoiningFee.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_defaultHourlyJoiningFee", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "SetJoiningFee", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "firstPeriodStartTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "periodDuration", + "type": "uint256" + }, + { + "internalType": "address", + "name": "vault", + "type": "address" + } + ], + "name": "calc", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "defaultHourlyJoiningFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "hourlyJoiningFeeFor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setHourlyJoiningFeeFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405161065638038061065683398101604081905261002f91610090565b61003833610040565b6001556100a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a257600080fd5b5051919050565b61059e806100b86000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638530a9761161005b5780638530a976146100c55780638da5cb5b146100ce578063cb7d6e44146100f6578063f2fde38b1461011657600080fd5b806307e7cc2714610082578063715018a6146100a85780637cb30b21146100b2575b600080fd5b61009561009036600461044d565b610129565b6040519081526020015b60405180910390f35b6100b06101b5565b005b6100b06100c0366004610482565b6101c9565b61009560015481565b60005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161009f565b6100956101043660046104ac565b60026020526000908152604090205481565b6100b06101243660046104ac565b610272565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205480820361015b57506001545b60008461016887426104fd565b6101729190610516565b905081610e10876101838885610551565b61018d90426104fd565b61019791906104fd565b6101a19190610516565b6101ab9190610551565b9695505050505050565b6101bd61032e565b6101c760006103af565b565b6101d161032e565b73ffffffffffffffffffffffffffffffffffffffff82166101f657600181905561021f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090208190555b6040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527fdbc1891aa43b25d34c9e91ae51cf4bdd4cee6562180419a686d464e7514aced1910160405180910390a15050565b61027a61032e565b73ffffffffffffffffffffffffffffffffffffffff8116610322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61032b816103af565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610319565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461044857600080fd5b919050565b60008060006060848603121561046257600080fd5b833592506020840135915061047960408501610424565b90509250925092565b6000806040838503121561049557600080fd5b61049e83610424565b946020939093013593505050565b6000602082840312156104be57600080fd5b6104c782610424565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610510576105106104ce565b92915050565b60008261054c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610510576105106104ce56fea2646970667358221220d72c11be32c736cd0825ff5754a9c428373973769452e4523dc5317b96f4130f64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638530a9761161005b5780638530a976146100c55780638da5cb5b146100ce578063cb7d6e44146100f6578063f2fde38b1461011657600080fd5b806307e7cc2714610082578063715018a6146100a85780637cb30b21146100b2575b600080fd5b61009561009036600461044d565b610129565b6040519081526020015b60405180910390f35b6100b06101b5565b005b6100b06100c0366004610482565b6101c9565b61009560015481565b60005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161009f565b6100956101043660046104ac565b60026020526000908152604090205481565b6100b06101243660046104ac565b610272565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205480820361015b57506001545b60008461016887426104fd565b6101729190610516565b905081610e10876101838885610551565b61018d90426104fd565b61019791906104fd565b6101a19190610516565b6101ab9190610551565b9695505050505050565b6101bd61032e565b6101c760006103af565b565b6101d161032e565b73ffffffffffffffffffffffffffffffffffffffff82166101f657600181905561021f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090208190555b6040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527fdbc1891aa43b25d34c9e91ae51cf4bdd4cee6562180419a686d464e7514aced1910160405180910390a15050565b61027a61032e565b73ffffffffffffffffffffffffffffffffffffffff8116610322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61032b816103af565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610319565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461044857600080fd5b919050565b60008060006060848603121561046257600080fd5b833592506020840135915061047960408501610424565b90509250925092565b6000806040838503121561049557600080fd5b61049e83610424565b946020939093013593505050565b6000602082840312156104be57600080fd5b6104c782610424565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610510576105106104ce565b92915050565b60008261054c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610510576105106104ce56fea2646970667358221220d72c11be32c736cd0825ff5754a9c428373973769452e4523dc5317b96f4130f64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/OpsManager.sol/OpsManager.json b/apps/dapp/abi/contracts/core/OpsManager.sol/OpsManager.json new file mode 100644 index 000000000..b76fb28b9 --- /dev/null +++ b/apps/dapp/abi/contracts/core/OpsManager.sol/OpsManager.json @@ -0,0 +1,506 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OpsManager", + "sourceName": "contracts/core/OpsManager.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_templeToken", + "type": "address" + }, + { + "internalType": "contract JoiningFee", + "name": "_joiningFee", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "exposure", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "primaryRevenue", + "type": "address" + } + ], + "name": "CreateExposure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "vault", + "type": "address" + } + ], + "name": "CreateVaultInstance", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "activeVaults", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20[]", + "name": "exposureTokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "addRevenue", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "contract IERC20", + "name": "revalToken", + "type": "address" + } + ], + "name": "createExposure", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "periodDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "enterExitWindowDuration", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "p", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "q", + "type": "uint256" + } + ], + "internalType": "struct Rational", + "name": "shareBoostFactor", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "firstPeriodStartTimestamp", + "type": "uint256" + } + ], + "name": "createVaultInstance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Vault[]", + "name": "vaults", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amountsTemple", + "type": "uint256[]" + } + ], + "name": "increaseVaultTemple", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "joiningFee", + "outputs": [ + { + "internalType": "contract JoiningFee", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Vault[]", + "name": "vaults", + "type": "address[]" + }, + { + "internalType": "contract IERC20[]", + "name": "exposureTokens", + "type": "address[]" + } + ], + "name": "liquidateExposures", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "name": "pools", + "outputs": [ + { + "internalType": "contract TreasuryFarmingRevenue", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Vault[]", + "name": "vaults", + "type": "address[]" + }, + { + "internalType": "contract IERC20", + "name": "exposureToken", + "type": "address" + } + ], + "name": "rebalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Vault[]", + "name": "vaults", + "type": "address[]" + }, + { + "internalType": "contract IERC20", + "name": "exposureToken", + "type": "address" + } + ], + "name": "requiresRebalance", + "outputs": [ + { + "internalType": "bool[]", + "name": "", + "type": "bool[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "revalTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "exposureToken", + "type": "address" + }, + { + "internalType": "contract ILiquidator", + "name": "_liquidator", + "type": "address" + } + ], + "name": "setExposureLiquidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "exposureToken", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bool", + "name": "state", + "type": "bool" + } + ], + "name": "setExposureMinterState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeExposure", + "outputs": [ + { + "internalType": "contract Exposure", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20[]", + "name": "exposureTokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "revals", + "type": "uint256[]" + } + ], + "name": "updateExposureReval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vaultedTemple", + "outputs": [ + { + "internalType": "contract VaultedTemple", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b50604051620082ed380380620082ed833981016040819052620000349162000303565b6200003f336200027e565b6001600160a01b03808316608052811660a05260405182906200006290620002ce565b6060808252600e908201526d7661756c7465642074656d706c6560901b608082015260a06020820181905260089082015267565f54454d504c4560c01b60c08201526001600160a01b03909116604082015260e001604051809103906000f080158015620000d4573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b039290921691821790556040516353a37c9d60e11b81523060048201526001602482015263a746f93a90604401600060405180830381600087803b1580156200013257600080fd5b505af115801562000147573d6000803e3d6000fd5b50506005546040518593506001600160a01b0390911691506200016a90620002dc565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200019e573d6000803e3d6000fd5b50600680546001600160a01b0319166001600160a01b0392831690811790915560055460405163ae85d64160e01b815260048101929092529091169063ae85d64190602401600060405180830381600087803b158015620001fe57600080fd5b505af115801562000213573d6000803e3d6000fd5b505060065460405163f2fde38b60e01b81523360048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b1580156200025d57600080fd5b505af115801562000272573d6000803e3d6000fd5b50505050505062000342565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611bca8062005aff83390190565b610c2480620076c983390190565b6001600160a01b03811681146200030057600080fd5b50565b600080604083850312156200031757600080fd5b82516200032481620002ea565b60208401519092506200033781620002ea565b809150509250929050565b60805160a051615789620003766000396000818161022601526108c00152600081816103b8015261087d01526157896000f3fe60806040523480156200001157600080fd5b5060043610620001895760003560e01c80638ccf2e9a11620000dd578063a7cd2a95116200008b578063b1a9069c116200006e578063b1a9069c14620003b2578063ca5b9ec514620003da578063f2fde38b14620003f157600080fd5b8063a7cd2a951462000384578063aa5220f8146200039b57600080fd5b80639d10ab8a11620000c05780639d10ab8a146200031d5780639e06e7ed1462000334578063a4063dbc146200034b57600080fd5b80638ccf2e9a14620002e75780638da5cb5b14620002fe57600080fd5b8063715018a6116200013b57806387cc5f79116200011e57806387cc5f79146200027857806389ce1a3114620002af5780638bc1437b14620002c657600080fd5b8063715018a614620002485780638142fc3e146200025257600080fd5b8063558d9f181162000170578063558d9f1814620001f25780636bacd59314620002095780636eeeaaa5146200022057600080fd5b80632ce8cfbf146200018e5780634d420cf514620001a7575b600080fd5b620001a56200019f36600462001819565b62000408565b005b600654620001c89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620001a56200020336600462001940565b6200069a565b620001a56200021a36600462001a40565b62000861565b620001c87f000000000000000000000000000000000000000000000000000000000000000081565b620001a562000a98565b620002696200026336600462001819565b62000ab0565b604051620001e9919062001b1b565b6200029e6200028936600462001b63565b60036020526000908152604090205460ff1681565b6040519015158152602001620001e9565b620001a5620002c036600462001940565b62000b9c565b600554620001c89073ffffffffffffffffffffffffffffffffffffffff1681565b620001a5620002f836600462001b83565b62000c33565b60005473ffffffffffffffffffffffffffffffffffffffff16620001c8565b620001c86200032e36600462001bbe565b62000e9f565b620001a56200034536600462001be7565b62000ed7565b620001c86200035c36600462001b63565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b620001a56200039536600462001c39565b62000f90565b620001a5620003ac36600462001c9a565b620012bf565b620001c87f000000000000000000000000000000000000000000000000000000000000000081565b620001a5620003eb36600462001d10565b62001461565b620001a56200040236600462001b63565b620014e1565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416620004c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4e6f206578706f737572652f726576656e7565206661726d696e6720706f6f6c60448201527f20666f722074686520676976656e20455243323020546f6b656e00000000000060648201526084015b60405180910390fd5b60005b8251811015620006955760036000848381518110620004e857620004e862001d43565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff16620005aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f70734d616e616765723a20696e76616c69642f696e6163746976652076617560448201527f6c7420696e2061727261790000000000000000000000000000000000000000006064820152608401620004b9565b73__$c588408e34393e9644b73b59296e6d3047$__63789654b9848381518110620005d957620005d962001d43565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff8681166000908152600190935260409283902054925160e085901b7fffffffff00000000000000000000000000000000000000000000000000000000168152918116600483015291909116602482015260440160006040518083038186803b1580156200066657600080fd5b505af41580156200067b573d6000803e3d6000fd5b5050505080806200068c9062001d72565b915050620004c5565b505050565b620006a46200159e565b805182511462000737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4578706f737572657320616e6420616d6f756e7473206172726179206d75737460448201527f206265207468652073616d65206c656e677468000000000000000000000000006064820152608401620004b9565b60005b82518110156200069557600160008483815181106200075d576200075d62001d43565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166363ec512d838381518110620007f057620007f062001d43565b60200260200101516040518263ffffffff1660e01b81526004016200081791815260200190565b600060405180830381600087803b1580156200083257600080fd5b505af115801562000847573d6000803e3d6000fd5b505050508080620008589062001d72565b9150506200073a565b6200086b6200159e565b600554600654604051600092899289927f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff9081169216908a908a908a907f0000000000000000000000000000000000000000000000000000000000000000908b90620008ed9062001696565b620009029a9998979695949392919062001e38565b604051809103906000f0801580156200091f573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff81811660008181526003602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600480548083018255938190527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168517905560055491517fa746f93a000000000000000000000000000000000000000000000000000000008152928301939093526024820192909252929350169063a746f93a90604401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff841681527ff7d22e822fc5be306576f8f850c78d7957f332e493ceffa7ef2714b4e44aceac9250602001905060405180910390a150505050505050565b62000aa26200159e565b62000aae600062001621565b565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260016020526040908190205490517f1e2e006500000000000000000000000000000000000000000000000000000000815260609273__$c588408e34393e9644b73b59296e6d3047$__92631e2e00659262000b2f928892169060040162001ecb565b600060405180830381865af415801562000b4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000b95919081019062001f44565b9392505050565b62000ba66200159e565b6040517fc5f0b11600000000000000000000000000000000000000000000000000000000815273__$c588408e34393e9644b73b59296e6d3047$__9063c5f0b1169062000bfd908590859060019060040162001fe9565b60006040518083038186803b15801562000c1657600080fd5b505af415801562000c2b573d6000803e3d6000fd5b505050505050565b62000c3d6200159e565b805182511462000cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f7661756c747320616e6420616d6f756e7473206172726179206d75737420626560448201527f207468652073616d65206c656e677468000000000000000000000000000000006064820152608401620004b9565b60005b825181101562000695576003600084838151811062000cf65762000cf662001d43565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1662000db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4f70734d616e616765723a20696e76616c6964207661756c7420696e2061727260448201527f61790000000000000000000000000000000000000000000000000000000000006064820152608401620004b9565b600554835173ffffffffffffffffffffffffffffffffffffffff909116906340c10f199085908490811062000df15762000df162001d43565b602002602001015184848151811062000e0e5762000e0e62001d43565b60200260200101516040518363ffffffff1660e01b815260040162000e5592919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b600060405180830381600087803b15801562000e7057600080fd5b505af115801562000e85573d6000803e3d6000fd5b50505050808062000e969062001d72565b91505062000cd3565b6002818154811062000eb057600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b62000ee16200159e565b6040517f0a1d273e0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152811515606482015273__$c588408e34393e9644b73b59296e6d3047$__90630a1d273e9060840160006040518083038186803b15801562000f7257600080fd5b505af415801562000f87573d6000803e3d6000fd5b50505050505050565b62000f9a6200159e565b6000815167ffffffffffffffff81111562000fb95762000fb9620016a4565b60405190808252806020026020018201604052801562000fe3578160200160208202803683370190505b50905060005b82518110156200112f57600160008483815181106200100c576200100c62001d43565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebf7a41e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620010ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010e0919062002087565b828281518110620010f557620010f562001d43565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280620011268162001d72565b91505062000fe9565b5060005b8351811015620012b9576003600085838151811062001156576200115662001d43565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1662001218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4f70734d616e616765723a20696e76616c6964207661756c7420696e2061727260448201527f61790000000000000000000000000000000000000000000000000000000000006064820152608401620004b9565b8381815181106200122d576200122d62001d43565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636823920a836040518263ffffffff1660e01b81526004016200126f9190620020a7565b600060405180830381600087803b1580156200128a57600080fd5b505af11580156200129f573d6000803e3d6000fd5b505050508080620012b09062001d72565b91505062001133565b50505050565b620012c96200159e565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600160205260409020541615620012fc57600080fd5b6040517f02fab49800000000000000000000000000000000000000000000000000000000815260009073__$c588408e34393e9644b73b59296e6d3047$__906302fab498906200135890879087908790600190600401620020f7565b602060405180830381865af415801562001376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139c919062002087565b6002805460018082019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8681169182179092556000908152602092835260409081902054815185841681529216928201929092529192507f390f4da03f9e74fca8b97195d2227fcc77f077755b8b358e42782b69c5faeb36910160405180910390a150505050565b6200146b6200159e565b6040517ffead81f00000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff80841660248301528216604482015273__$c588408e34393e9644b73b59296e6d3047$__9063fead81f09060640162000bfd565b620014eb6200159e565b73ffffffffffffffffffffffffffffffffffffffff811662001590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620004b9565b6200159b8162001621565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620004b9565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b613609806200214b83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715620016f957620016f9620016a4565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715620017495762001749620016a4565b604052919050565b600067ffffffffffffffff8211156200176e576200176e620016a4565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff811681146200159b57600080fd5b600082601f830112620017ad57600080fd5b81356020620017c6620017c08362001751565b620016ff565b82815260059290921b84018101918181019086841115620017e657600080fd5b8286015b848110156200180e578035620018008162001778565b8352918301918301620017ea565b509695505050505050565b600080604083850312156200182d57600080fd5b823567ffffffffffffffff8111156200184557600080fd5b62001853858286016200179b565b9250506020830135620018668162001778565b809150509250929050565b600082601f8301126200188357600080fd5b8135602062001896620017c08362001751565b82815260059290921b84018101918181019086841115620018b657600080fd5b8286015b848110156200180e578035620018d08162001778565b8352918301918301620018ba565b600082601f830112620018f057600080fd5b8135602062001903620017c08362001751565b82815260059290921b840181019181810190868411156200192357600080fd5b8286015b848110156200180e578035835291830191830162001927565b600080604083850312156200195457600080fd5b823567ffffffffffffffff808211156200196d57600080fd5b6200197b8683870162001871565b935060208501359150808211156200199257600080fd5b50620019a185828601620018de565b9150509250929050565b600082601f830112620019bd57600080fd5b813567ffffffffffffffff811115620019da57620019da620016a4565b62001a0d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601620016ff565b81815284602083860101111562001a2357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008086880360e081121562001a5b57600080fd5b873567ffffffffffffffff8082111562001a7457600080fd5b62001a828b838c01620019ab565b985060208a013591508082111562001a9957600080fd5b5062001aa88a828b01620019ab565b965050604088013594506060880135935060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808201121562001aea57600080fd5b5062001af5620016d3565b6080880135815260a088013560208201528092505060c087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101562001b5757835115158352928401929184019160010162001b37565b50909695505050505050565b60006020828403121562001b7657600080fd5b813562000b958162001778565b6000806040838503121562001b9757600080fd5b823567ffffffffffffffff8082111562001bb057600080fd5b6200197b868387016200179b565b60006020828403121562001bd157600080fd5b5035919050565b80151581146200159b57600080fd5b60008060006060848603121562001bfd57600080fd5b833562001c0a8162001778565b9250602084013562001c1c8162001778565b9150604084013562001c2e8162001bd8565b809150509250925092565b6000806040838503121562001c4d57600080fd5b823567ffffffffffffffff8082111562001c6657600080fd5b62001c74868387016200179b565b9350602085013591508082111562001c8b57600080fd5b50620019a18582860162001871565b60008060006060848603121562001cb057600080fd5b833567ffffffffffffffff8082111562001cc957600080fd5b62001cd787838801620019ab565b9450602086013591508082111562001cee57600080fd5b5062001cfd86828701620019ab565b925050604084013562001c2e8162001778565b6000806040838503121562001d2457600080fd5b823562001d318162001778565b91506020830135620018668162001778565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362001dcb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815180845260005b8181101562001dfa5760208185018101518683018201520162001ddc565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b600061016080835262001e4e8184018e62001dd2565b9050828103602084015262001e64818d62001dd2565b73ffffffffffffffffffffffffffffffffffffffff9b8c166040850152998b1660608401525050958816608087015260a086019490945260c0850192909252805160e085015260200151610100840152909316610120820152610140019190915292915050565b604080825283519082018190526000906020906060840190828701845b8281101562001f1c57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162001ee8565b50505073ffffffffffffffffffffffffffffffffffffffff9490941692019190915250919050565b6000602080838503121562001f5857600080fd5b825167ffffffffffffffff81111562001f7057600080fd5b8301601f8101851362001f8257600080fd5b805162001f93620017c08262001751565b81815260059190911b8201830190838101908783111562001fb357600080fd5b928401925b8284101562001fde57835162001fce8162001bd8565b8252928401929084019062001fb8565b979650505050505050565b606080825284519082018190526000906020906080840190828801845b828110156200203a57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162002006565b5050508381038285015285518082528683019183019060005b81811015620020715783518352928401929184019160010162002053565b5050809350505050826040830152949350505050565b6000602082840312156200209a57600080fd5b815162000b958162001778565b6020808252825182820181905260009190848201906040850190845b8181101562001b5757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101620020c3565b6080815260006200210c608083018762001dd2565b828103602084015262002120818762001dd2565b73ffffffffffffffffffffffffffffffffffffffff9590951660408401525050606001529291505056fe6102606040527f826f68b7f2dc717b262281384d6e69ddaba3805f6e37a8c771db2cc5d6ba4013610160523480156200003757600080fd5b5060405162003609380380620036098339810160408190526200005a91620003b3565b6040805180820190915260018152603160f81b60208201528a908a90829062000085826000620001a0565b6101205262000096816001620001a0565b61014052815160208084019190912060e052815190820120610100524660a0526200012460e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526200013833620001d9565b600662000146838262000529565b50600762000155828262000529565b5050506001600160a01b03978816610180529587166101a0529386166101c05261020092909252610220528051600b5560200151600c55909116610240526101e052506200064f9050565b6000602083511015620001c057620001b8836200022b565b9050620001d3565b81620001cd848262000529565b5060ff90505b92915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000262578260405163305a27a960e01b8152600401620002599190620005f5565b60405180910390fd5b80516200026f826200062a565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002aa57818101518382015260200162000290565b50506000910152565b600082601f830112620002c557600080fd5b81516001600160401b0380821115620002e257620002e262000277565b604051601f8301601f19908116603f011681019082821181831017156200030d576200030d62000277565b816040528381528660208588010111156200032757600080fd5b6200033a8460208301602089016200028d565b9695505050505050565b80516001600160a01b03811681146200035c57600080fd5b919050565b6000604082840312156200037457600080fd5b604080519081016001600160401b038111828210171562000399576200039962000277565b604052825181526020928301519281019290925250919050565b6000806000806000806000806000806101608b8d031215620003d457600080fd5b8a516001600160401b0380821115620003ec57600080fd5b620003fa8e838f01620002b3565b9b5060208d01519150808211156200041157600080fd5b50620004208d828e01620002b3565b9950506200043160408c0162000344565b97506200044160608c0162000344565b96506200045160808c0162000344565b955060a08b0151945060c08b01519350620004708c60e08d0162000361565b9250620004816101208c0162000344565b91506101408b015190509295989b9194979a5092959850565b600181811c90821680620004af57607f821691505b602082108103620004d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200052457600081815260208120601f850160051c81016020861015620004ff5750805b601f850160051c820191505b8181101562000520578281556001016200050b565b5050505b505050565b81516001600160401b0381111562000545576200054562000277565b6200055d816200055684546200049a565b84620004d6565b602080601f8311600181146200059557600084156200057c5750858301515b600019600386901b1c1916600185901b17855562000520565b600085815260208120601f198616915b82811015620005c657888601518255948401946001909101908401620005a5565b5085821015620005e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006168160408501602087016200028d565b601f01601f19169190910160400192915050565b80516020808301519190811015620004d05760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051612e97620007726000396000818161047d0152610aed0152600081816106d90152610f500152600081816105f601528181610abe01528181610ef50152610f9501526000818161042601528181610a9801528181610ec401528181610f190152610f7101526000818161069f0152610c6401526000818161052601528181610cbe0152818161106a0152818161120f01526115f20152600081816105cf0152610c420152600081816104ff015261076e0152600061115b0152600061113101526000611e9301526000611e6b01526000611dc601526000611df001526000611e1a0152612e976000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063715018a611610186578063a9059cbb116100e3578063b9844d8d11610097578063e1eda8f911610071578063e1eda8f91461069a578063f2fde38b146106c1578063fc1d3de2146106d457600080fd5b8063b9844d8d1461062b578063bca8371f1461064b578063dd62ed3e1461065457600080fd5b8063b1a9069c116100c8578063b1a9069c146105ca578063b470aade146105f1578063b6b55f251461061857600080fd5b8063a9059cbb146105a4578063b0ff1106146105b757600080fd5b806384b0196e1161013a57806395d89b411161011f57806395d89b4114610581578063981fc37214610589578063a457c2d71461059157600080fd5b806384b0196e146105485780638da5cb5b1461056357600080fd5b80637ecebe001161016b5780637ecebe00146104e757806381771329146104fa57806382dad8ac1461052157600080fd5b8063715018a6146104d75780637c5a227c146104df57600080fd5b80633644e5151161023f5780634473ad52116101f35780636b2f1417116101cd5780636b2f14171461045b5780636eeeaaa51461047857806370a08231146104c457600080fd5b80634473ad521461040157806363ceec65146104215780636823920a1461044857600080fd5b80633a98ef39116102245780633a98ef39146103e85780633d355f76146103f157806341ffb72e146103f957600080fd5b80633644e515146103cd57806339509351146103d557600080fd5b806323b872dd116102965780632f4f21e21161027b5780632f4f21e214610388578063313ce5671461039b578063341533d9146103aa57600080fd5b806323b872dd146103625780632e1a7d4d1461037557600080fd5b8063095ea7b3116102c7578063095ea7b314610316578063174e4ea61461033957806318160ddd1461035a57600080fd5b8063061e5844146102e357806306fdde03146102f8575b600080fd5b6102f66102f13660046128e0565b6106fb565b005b6103006108bd565b60405161030d91906129b0565b60405180910390f35b6103296103243660046129c3565b61094f565b604051901515815260200161030d565b61034c6103473660046129ef565b610969565b60405190815260200161030d565b61034c610998565b610329610370366004612a08565b6109aa565b6102f66103833660046129ef565b6109ce565b6102f66103963660046129c3565b6109dc565b6040516012815260200161030d565b600b54600c546103b8919082565b6040805192835260208301919091520161030d565b61034c610d8e565b6103296103e33660046129c3565b610d98565b61034c60085481565b610329610de4565b610329610df6565b61034c61040f366004612a49565b60096020526000908152604090205481565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b6102f6610456366004612aa5565b610e1b565b610463610ebf565b6040805192835290151560208301520161030d565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030d565b61034c6104d2366004612a49565b610fdf565b6102f661100e565b6103b8611022565b61034c6104f5366004612a49565b6110f8565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b610550611123565b60405161030d9796959493929190612b88565b60025473ffffffffffffffffffffffffffffffffffffffff1661049f565b6103006111c7565b61034c6111d6565b61032961059f3660046129c3565b6112a3565b6103296105b23660046129c3565b611374565b61034c6105c53660046129ef565b611382565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b6102f66106263660046129ef565b61139f565b61034c610639366004612a49565b600a6020526000908152604090205481565b61034c61012c81565b61034c610662366004612c47565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b6102f66106cf366004612a49565b6113a9565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b8342111561076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5661756c743a206578706972656420646561646c696e6500000000000000000060448201526064015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008733888861079a8c61145d565b60408051602081019790975273ffffffffffffffffffffffffffffffffffffffff95861690870152939092166060850152608084015260a083015260c082015260e001604051602081830303815290604052805190602001209050600061080082611492565b90506000610810828787876114da565b90508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5661756c743a20696e76616c6964207369676e617475726500000000000000006044820152606401610761565b6108b289338a611502565b505050505050505050565b6060600680546108cc90612c80565b80601f01602080910402602001604051908101604052809291908181526020018280546108f890612c80565b80156109455780601f1061091a57610100808354040283529160200191610945565b820191906000526020600020905b81548152906001019060200180831161092857829003601f168201915b5050505050905090565b60003361095d8185856116a3565b60019150505b92915050565b6000806000610976611022565b9092509050806109868386612cfc565b6109909190612d13565b949350505050565b60006109a5600854610969565b905090565b6000336109b8858285611857565b6109c385858561192e565b506001949350505050565b6109d9333383611502565b50565b6109e4610de4565b610a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5661756c743a2043616e6e6f74206a6f696e207661756c74207768656e206f7560448201527f7473696465206f6620656e7465722f657869742077696e646f770000000000006064820152608401610761565b6040517f07e7cc270000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000060248201523060448201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307e7cc2790606401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190612d4e565b90506000670de0b6b3a7640000610b848385612cfc565b610b8e9190612d13565b9050808311610c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5661756c743a2043616e6e6f74206a6f696e207768656e20666565206973206860448201527f6967686572207468616e20616d6f756e740000000000000000000000000000006064820152608401610761565b6000610c2b8285612d67565b90508315610d3057610c3d8582611bf1565b610c897f0000000000000000000000000000000000000000000000000000000000000000337f000000000000000000000000000000000000000000000000000000000000000087611d17565b6040517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906340c10f1990604401600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050505b6040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018690529081018290527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060600160405180910390a15050505050565b60006109a5611dac565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061095d9082908690610ddf908790612d7a565b6116a3565b600080610def610ebf565b9392505050565b6000806000610e03610ebf565b91509150808015610e145750600082115b9250505090565b610e23611ee4565b60005b8151811015610ebb57818181518110610e4157610e41612d8d565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663be040fb06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610e9057600080fd5b505af1158015610ea4573d6000803e3d6000fd5b505050508080610eb390612dbc565b915050610e26565b5050565b6000807f0000000000000000000000000000000000000000000000000000000000000000421015610ef35750600091829150565b7f0000000000000000000000000000000000000000000000000000000000000000610f3e7f000000000000000000000000000000000000000000000000000000000000000042612d67565b610f489190612d13565b91504261012c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610fba7f000000000000000000000000000000000000000000000000000000000000000087612cfc565b610fc49190612d7a565b610fce9190612d7a565b610fd89190612d7a565b1190509091565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604081205461096390610969565b611016611ee4565b6110206000611f65565b565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d59190612d4e565b91506008549050816000036110e957600191505b806000036110f45750805b9091565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a6020526040812054610963565b6000606080828080836111567f000000000000000000000000000000000000000000000000000000000000000083611fdc565b6111817f00000000000000000000000000000000000000000000000000000000000000006001611fdc565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6060600780546108cc90612c80565b600c54600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009291907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f9190612d4e565b6112999190612cfc565b6109a59190612d13565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610761565b6109c382868684036116a3565b60003361095d81858561192e565b600080600061138f611022565b9092509050816109868286612cfc565b6109d933826109dc565b6113b1611ee4565b73ffffffffffffffffffffffffffffffffffffffff8116611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610761565b6109d981611f65565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604090208054600181018255905b50919050565b600061096361149f611dac565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006114eb87878787612087565b915091506114f881612176565b5095945050505050565b61150a610df6565b611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5661756c743a2043616e6e6f742065786974207661756c74207768656e206f7560448201527f7473696465206f6620656e7465722f657869742077696e646f770000000000006064820152608401610761565b80156115a6576115a68382612329565b6040517f982755930000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff83811660248301527f00000000000000000000000000000000000000000000000000000000000000001690639827559390604401600060405180830381600087803b15801561163657600080fd5b505af115801561164a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018590527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364935001905060405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff8316611745576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff82166117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611928578181101561191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610761565b61192884848484036116a3565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166119d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8216611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081205490611aa483611382565b905080821015611b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600960205260408082208054859003905591861681529081208054839290611b7c908490612d7a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611be291815260200190565b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610761565b6000611c7982611382565b90508060086000828254611c8d9190612d7a565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081208054839290611cc7908490612d7a565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161184a565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611928908590612523565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015611e1257507f000000000000000000000000000000000000000000000000000000000000000046145b15611e3c57507f000000000000000000000000000000000000000000000000000000000000000090565b6109a5604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60025473ffffffffffffffffffffffffffffffffffffffff163314611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610761565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff8314611ff657611fef83612637565b9050610963565b81805461200290612c80565b80601f016020809104026020016040519081016040528092919081815260200182805461202e90612c80565b801561207b5780601f106120505761010080835404028352916020019161207b565b820191906000526020600020905b81548152906001019060200180831161205e57829003601f168201915b50505050509050610963565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156120be575060009050600361216d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612112573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166121665760006001925092505061216d565b9150600090505b94509492505050565b600081600481111561218a5761218a612df4565b036121925750565b60018160048111156121a6576121a6612df4565b0361220d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610761565b600281600481111561222157612221612df4565b03612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610761565b600381600481111561229c5761229c612df4565b036109d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff82166123cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812054906123fc83611382565b90508082101561248e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604081208284039055600880548392906124ca908490612d67565b909155505060405183815260009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6000612585826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126769092919063ffffffff16565b90508051600014806125a65750808060200190518101906125a69190612e23565b612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610761565b505050565b6060600061264483612685565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b606061099084846000856126c6565b600060ff8216601f811115610963576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082471015612758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610761565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127819190612e45565b60006040518083038185875af1925050503d80600081146127be576040519150601f19603f3d011682016040523d82523d6000602084013e6127c3565b606091505b50915091506127d4878383876127df565b979650505050505050565b6060831561287557825160000361286e5773ffffffffffffffffffffffffffffffffffffffff85163b61286e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610761565b5081610990565b610990838381511561288a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076191906129b0565b73ffffffffffffffffffffffffffffffffffffffff811681146109d957600080fd5b60008060008060008060c087890312156128f957600080fd5b8635612904816128be565b95506020870135945060408701359350606087013560ff8116811461292857600080fd5b9598949750929560808101359460a0909101359350915050565b60005b8381101561295d578181015183820152602001612945565b50506000910152565b6000815180845261297e816020860160208601612942565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610def6020830184612966565b600080604083850312156129d657600080fd5b82356129e1816128be565b946020939093013593505050565b600060208284031215612a0157600080fd5b5035919050565b600080600060608486031215612a1d57600080fd5b8335612a28816128be565b92506020840135612a38816128be565b929592945050506040919091013590565b600060208284031215612a5b57600080fd5b8135610def816128be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8035612aa0816128be565b919050565b60006020808385031215612ab857600080fd5b823567ffffffffffffffff80821115612ad057600080fd5b818501915085601f830112612ae457600080fd5b813581811115612af657612af6612a66565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715612b3957612b39612a66565b604052918252848201925083810185019188831115612b5757600080fd5b938501935b82851015612b7c57612b6d85612a95565b84529385019392850192612b5c565b98975050505050505050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152612bc460e084018a612966565b8381036040850152612bd6818a612966565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015612c3557835183529284019291840191600101612c19565b50909c9b505050505050505050505050565b60008060408385031215612c5a57600080fd5b8235612c65816128be565b91506020830135612c75816128be565b809150509250929050565b600181811c90821680612c9457607f821691505b60208210810361148c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761096357610963612ccd565b600082612d49577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612d6057600080fd5b5051919050565b8181038181111561096357610963612ccd565b8082018082111561096357610963612ccd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ded57612ded612ccd565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215612e3557600080fd5b81518015158114610def57600080fd5b60008251612e57818460208701612942565b919091019291505056fea26469706673582212208eb65146c9730b3f8a30161afade6d0783f540d14bdd5d5796102ae071443b0364736f6c63430008130033a26469706673582212201ed79cff59d0cdb05956b4ee28fba433ead98413fc84ee1a4e276ab6326cc92364736f6c6343000813003360806040523480156200001157600080fd5b5060405162001bca38038062001bca8339810160408190526200003491620001a0565b828262000041336200008b565b60046200004f8382620002bc565b5060056200005e8282620002bc565b5050600880546001600160a01b0319166001600160a01b0393909316929092179091555062000388915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200010357600080fd5b81516001600160401b0380821115620001205762000120620000db565b604051601f8301601f19908116603f011681019082821181831017156200014b576200014b620000db565b816040528381526020925086838588010111156200016857600080fd5b600091505b838210156200018c57858201830151818301840152908201906200016d565b600093810190920192909252949350505050565b600080600060608486031215620001b657600080fd5b83516001600160401b0380821115620001ce57600080fd5b620001dc87838801620000f1565b94506020860151915080821115620001f357600080fd5b506200020286828701620000f1565b604086015190935090506001600160a01b03811681146200022257600080fd5b809150509250925092565b600181811c908216806200024257607f821691505b6020821081036200026357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b757600081815260208120601f850160051c81016020861015620002925750805b601f850160051c820191505b81811015620002b3578281556001016200029e565b5050505b505050565b81516001600160401b03811115620002d857620002d8620000db565b620002f081620002e984546200022d565b8462000269565b602080601f8311600181146200032857600084156200030f5750858301515b600019600386901b1c1916600185901b178555620002b3565b600085815260208120601f198616915b82811015620003595788860151825594840194600190910190840162000338565b5085821015620003785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61183280620003986000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063715018a611610104578063a746f93a116100a2578063be040fb011610071578063be040fb014610420578063c2ba474414610428578063dd62ed3e1461044b578063f2fde38b1461049157600080fd5b8063a746f93a146103d4578063a9059cbb146103e7578063ae85d641146103fa578063b0ff11061461040d57600080fd5b80638da5cb5b116100de5780638da5cb5b1461038857806395d89b41146103a657806398275593146103ae578063a457c2d7146103c157600080fd5b8063715018a6146103435780637c5a227c1461034b578063873924e41461036857600080fd5b8063313ce5671161017c5780634046ebae1161014b5780634046ebae146102b857806340c10f19146102fd5780634473ad521461031057806370a082311461033057600080fd5b8063313ce5671461028457806339509351146102935780633a98ef39146102a65780633f3a0c5b146102af57600080fd5b8063095ea7b3116101b8578063095ea7b314610225578063174e4ea61461024857806318160ddd1461026957806323b872dd1461027157600080fd5b8063057ac848146101df578063064c97d6146101f457806306fdde0314610207575b600080fd5b6101f26101ed366004611539565b6104a4565b005b6101f2610202366004611539565b610506565b61020f610560565b60405161021c9190611552565b60405180910390f35b6102386102333660046115e0565b6105f2565b604051901515815260200161021c565b61025b610256366004611539565b61060c565b60405190815260200161021c565b61025b61063b565b61023861027f36600461160c565b61064d565b6040516012815260200161021c565b6102386102a13660046115e0565b610671565b61025b60065481565b61025b60095481565b600b546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6101f261030b3660046115e0565b6106bd565b61025b61031e36600461164d565b60076020526000908152604090205481565b61025b61033e36600461164d565b610760565b6101f261078f565b6103536107a3565b6040805192835260208301919091520161021c565b6008546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff166102d8565b61020f6107c6565b6101f26103bc366004611671565b6107d5565b6102386103cf3660046115e0565b610900565b6101f26103e23660046116a1565b6109d1565b6102386103f53660046115e0565b610a60565b6101f261040836600461164d565b610a6e565b61025b61041b366004611539565b610aef565b6101f2610b0c565b61023861043636600461164d565b600a6020526000908152604090205460ff1681565b61025b6104593660046116d4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b6101f261049f36600461164d565b610b1e565b6104ac610bd5565b6009805490829060006104bf8385611731565b90915550506009546040805183815260208101929092527fa59e96b3c1d252b5b2fd20d08a77732f3af73142db0af5e50ced94b558c7fa0591015b60405180910390a15050565b61050e610bd5565b6009805490829060006105218385611744565b90915550506009546040805183815260208101929092527f307076957a8ce6e01b7d381f303646d1011fb16a9842dfa0859a9eddfd312e4291016104fa565b60606004805461056f90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461059b90611757565b80156105e85780601f106105bd576101008083540402835291602001916105e8565b820191906000526020600020905b8154815290600101906020018083116105cb57829003601f168201915b5050505050905090565b600033610600818585610c56565b60019150505b92915050565b60008060006106196107a3565b90925090508061062983866117aa565b61063391906117c1565b949350505050565b600061064860065461060c565b905090565b60003361065b858285610e0a565b610666858585610ee1565b506001949350505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060090829086906106b8908790611731565b610c56565b336000908152600a602052604090205460ff1661073b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4578706f737572653a2063616c6c6572206973206e6f742061207661756c740060448201526064015b60405180910390fd5b61074582826111a4565b80600960008282546107579190611731565b90915550505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120546106069061060c565b610797610bd5565b6107a160006112ca565b565b60095460065460008290036107b757600191505b806000036107c25750805b9091565b60606005805461056f90611757565b6107df338361133f565b81600960008282546107f19190611744565b9091555050600b5473ffffffffffffffffffffffffffffffffffffffff16156108a157600b546040517f4d4c23a80000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff838116602483015290911690634d4c23a890604401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050505b6008546040805173ffffffffffffffffffffffffffffffffffffffff928316815233602082015291831690820152606081018390527fee02732fab40ece8284c756220846dff4b8d32058b86b35b4f0459bf172fcef0906080016104fa565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610732565b6106668286868403610c56565b6109d9610bd5565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600a602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f73d5b2f10126b99916a4c71d591a354f52ed52ca3b0278eaf584e35220addb7791016104fa565b600033610600818585610ee1565b610a76610bd5565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f111c6aeb2006d748bdae2ddf082866e6ce7eb3d48ef324b5d9547570f5694e4f9060200160405180910390a150565b6000806000610afc6107a3565b90925090508161062982866117aa565b6107a1610b1833610760565b336107d5565b610b26610bd5565b73ffffffffffffffffffffffffffffffffffffffff8116610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610732565b610bd2816112ca565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610732565b73ffffffffffffffffffffffffffffffffffffffff8316610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610edb5781811015610ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610732565b610edb8484848403610c56565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120549061105783610aef565b9050808210156110e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260076020526040808220805485900390559186168152908120805483929061112f908490611731565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161119591815260200190565b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610732565b600061122c82610aef565b905080600660008282546112409190611731565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120805483929061127a908490611731565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610dfd565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff82166113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120549061141283610aef565b9050808210156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208284039055600680548392906114e0908490611744565b909155505060405183815260009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b60006020828403121561154b57600080fd5b5035919050565b600060208083528351808285015260005b8181101561157f57858101830151858201604001528201611563565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bd257600080fd5b600080604083850312156115f357600080fd5b82356115fe816115be565b946020939093013593505050565b60008060006060848603121561162157600080fd5b833561162c816115be565b9250602084013561163c816115be565b929592945050506040919091013590565b60006020828403121561165f57600080fd5b813561166a816115be565b9392505050565b6000806040838503121561168457600080fd5b823591506020830135611696816115be565b809150509250929050565b600080604083850312156116b457600080fd5b82356116bf816115be565b91506020830135801515811461169657600080fd5b600080604083850312156116e757600080fd5b82356116f2816115be565b91506020830135611696816115be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561060657610606611702565b8181038181111561060657610606611702565b600181811c9082168061176b57607f821691505b6020821081036117a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808202811582820484141761060657610606611702565b6000826117f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122023d50523323278d5d51dbe41fe9be37b11c00f4d77ff9097ffba9f3a850c9a6a64736f6c6343000813003360c060405234801561001057600080fd5b50604051610c24380380610c2483398101604081905261002f916100b7565b6100383361004f565b6001600160a01b039182166080521660a0526100f1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100b457600080fd5b50565b600080604083850312156100ca57600080fd5b82516100d58161009f565b60208401519092506100e68161009f565b809150509250929050565b60805160a051610b016101236000396000818160a40152610172015260008181610112015261024f0152610b016000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ef578063b1a9069c1461010d578063d9caed1214610134578063f2fde38b1461014757600080fd5b80634d4c23a814610082578063715018a6146100975780638bc1437b1461009f575b600080fd5b61009561009036600461098e565b61015a565b005b610095610279565b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff166100c6565b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b6100956101423660046109ba565b61028d565b6100956101553660046109f6565b61040d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461024a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f5661756c74656454656d706c653a204f6e6c792054656d70654578706f73757260448201527f652063616e2072656465656d2074656d706c65206f6e20626568616c66206f6660648201527f2061207661756c74000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6102757f000000000000000000000000000000000000000000000000000000000000000082846104c4565b5050565b610281610551565b61028b60006105d2565b565b610295610551565b73ffffffffffffffffffffffffffffffffffffffff8216610312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f746f2061646472657373207a65726f00000000000000000000000000000000006044820152606401610241565b73ffffffffffffffffffffffffffffffffffffffff83166103fd5760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610387576040519150601f19603f3d011682016040523d82523d6000602084013e61038c565b606091505b50509050806103f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f73656e64206661696c65640000000000000000000000000000000000000000006044820152606401610241565b50505050565b6104088383836104c4565b505050565b610415610551565b73ffffffffffffffffffffffffffffffffffffffff81166104b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610241565b6104c1816105d2565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610408908490610647565b60005473ffffffffffffffffffffffffffffffffffffffff16331461028b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610241565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006106a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107569092919063ffffffff16565b90508051600014806106ca5750808060200190518101906106ca9190610a18565b610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610241565b6060610765848460008561076d565b949350505050565b6060824710156107ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610241565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108289190610a5e565b60006040518083038185875af1925050503d8060008114610865576040519150601f19603f3d011682016040523d82523d6000602084013e61086a565b606091505b509150915061087b87838387610886565b979650505050505050565b6060831561091c5782516000036109155773ffffffffffffffffffffffffffffffffffffffff85163b610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610241565b5081610765565b61076583838151156109315781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102419190610a7a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461098957600080fd5b919050565b600080604083850312156109a157600080fd5b823591506109b160208401610965565b90509250929050565b6000806000606084860312156109cf57600080fd5b6109d884610965565b92506109e660208501610965565b9150604084013590509250925092565b600060208284031215610a0857600080fd5b610a1182610965565b9392505050565b600060208284031215610a2a57600080fd5b81518015158114610a1157600080fd5b60005b83811015610a55578181015183820152602001610a3d565b50506000910152565b60008251610a70818460208701610a3a565b9190910192915050565b6020815260008251806020840152610a99816040850160208701610a3a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220b06e848b9e2080bdb3d2b184aef6034154a8503d1dc3c18c25a9840294992ab464736f6c63430008130033", + "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620001895760003560e01c80638ccf2e9a11620000dd578063a7cd2a95116200008b578063b1a9069c116200006e578063b1a9069c14620003b2578063ca5b9ec514620003da578063f2fde38b14620003f157600080fd5b8063a7cd2a951462000384578063aa5220f8146200039b57600080fd5b80639d10ab8a11620000c05780639d10ab8a146200031d5780639e06e7ed1462000334578063a4063dbc146200034b57600080fd5b80638ccf2e9a14620002e75780638da5cb5b14620002fe57600080fd5b8063715018a6116200013b57806387cc5f79116200011e57806387cc5f79146200027857806389ce1a3114620002af5780638bc1437b14620002c657600080fd5b8063715018a614620002485780638142fc3e146200025257600080fd5b8063558d9f181162000170578063558d9f1814620001f25780636bacd59314620002095780636eeeaaa5146200022057600080fd5b80632ce8cfbf146200018e5780634d420cf514620001a7575b600080fd5b620001a56200019f36600462001819565b62000408565b005b600654620001c89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620001a56200020336600462001940565b6200069a565b620001a56200021a36600462001a40565b62000861565b620001c87f000000000000000000000000000000000000000000000000000000000000000081565b620001a562000a98565b620002696200026336600462001819565b62000ab0565b604051620001e9919062001b1b565b6200029e6200028936600462001b63565b60036020526000908152604090205460ff1681565b6040519015158152602001620001e9565b620001a5620002c036600462001940565b62000b9c565b600554620001c89073ffffffffffffffffffffffffffffffffffffffff1681565b620001a5620002f836600462001b83565b62000c33565b60005473ffffffffffffffffffffffffffffffffffffffff16620001c8565b620001c86200032e36600462001bbe565b62000e9f565b620001a56200034536600462001be7565b62000ed7565b620001c86200035c36600462001b63565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b620001a56200039536600462001c39565b62000f90565b620001a5620003ac36600462001c9a565b620012bf565b620001c87f000000000000000000000000000000000000000000000000000000000000000081565b620001a5620003eb36600462001d10565b62001461565b620001a56200040236600462001b63565b620014e1565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526001602052604090205416620004c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4e6f206578706f737572652f726576656e7565206661726d696e6720706f6f6c60448201527f20666f722074686520676976656e20455243323020546f6b656e00000000000060648201526084015b60405180910390fd5b60005b8251811015620006955760036000848381518110620004e857620004e862001d43565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff16620005aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f70734d616e616765723a20696e76616c69642f696e6163746976652076617560448201527f6c7420696e2061727261790000000000000000000000000000000000000000006064820152608401620004b9565b73__$c588408e34393e9644b73b59296e6d3047$__63789654b9848381518110620005d957620005d962001d43565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff8681166000908152600190935260409283902054925160e085901b7fffffffff00000000000000000000000000000000000000000000000000000000168152918116600483015291909116602482015260440160006040518083038186803b1580156200066657600080fd5b505af41580156200067b573d6000803e3d6000fd5b5050505080806200068c9062001d72565b915050620004c5565b505050565b620006a46200159e565b805182511462000737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4578706f737572657320616e6420616d6f756e7473206172726179206d75737460448201527f206265207468652073616d65206c656e677468000000000000000000000000006064820152608401620004b9565b60005b82518110156200069557600160008483815181106200075d576200075d62001d43565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166363ec512d838381518110620007f057620007f062001d43565b60200260200101516040518263ffffffff1660e01b81526004016200081791815260200190565b600060405180830381600087803b1580156200083257600080fd5b505af115801562000847573d6000803e3d6000fd5b505050508080620008589062001d72565b9150506200073a565b6200086b6200159e565b600554600654604051600092899289927f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff9081169216908a908a908a907f0000000000000000000000000000000000000000000000000000000000000000908b90620008ed9062001696565b620009029a9998979695949392919062001e38565b604051809103906000f0801580156200091f573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff81811660008181526003602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600480548083018255938190527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168517905560055491517fa746f93a000000000000000000000000000000000000000000000000000000008152928301939093526024820192909252929350169063a746f93a90604401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff841681527ff7d22e822fc5be306576f8f850c78d7957f332e493ceffa7ef2714b4e44aceac9250602001905060405180910390a150505050505050565b62000aa26200159e565b62000aae600062001621565b565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260016020526040908190205490517f1e2e006500000000000000000000000000000000000000000000000000000000815260609273__$c588408e34393e9644b73b59296e6d3047$__92631e2e00659262000b2f928892169060040162001ecb565b600060405180830381865af415801562000b4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000b95919081019062001f44565b9392505050565b62000ba66200159e565b6040517fc5f0b11600000000000000000000000000000000000000000000000000000000815273__$c588408e34393e9644b73b59296e6d3047$__9063c5f0b1169062000bfd908590859060019060040162001fe9565b60006040518083038186803b15801562000c1657600080fd5b505af415801562000c2b573d6000803e3d6000fd5b505050505050565b62000c3d6200159e565b805182511462000cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f7661756c747320616e6420616d6f756e7473206172726179206d75737420626560448201527f207468652073616d65206c656e677468000000000000000000000000000000006064820152608401620004b9565b60005b825181101562000695576003600084838151811062000cf65762000cf662001d43565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1662000db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4f70734d616e616765723a20696e76616c6964207661756c7420696e2061727260448201527f61790000000000000000000000000000000000000000000000000000000000006064820152608401620004b9565b600554835173ffffffffffffffffffffffffffffffffffffffff909116906340c10f199085908490811062000df15762000df162001d43565b602002602001015184848151811062000e0e5762000e0e62001d43565b60200260200101516040518363ffffffff1660e01b815260040162000e5592919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b600060405180830381600087803b15801562000e7057600080fd5b505af115801562000e85573d6000803e3d6000fd5b50505050808062000e969062001d72565b91505062000cd3565b6002818154811062000eb057600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b62000ee16200159e565b6040517f0a1d273e0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152811515606482015273__$c588408e34393e9644b73b59296e6d3047$__90630a1d273e9060840160006040518083038186803b15801562000f7257600080fd5b505af415801562000f87573d6000803e3d6000fd5b50505050505050565b62000f9a6200159e565b6000815167ffffffffffffffff81111562000fb95762000fb9620016a4565b60405190808252806020026020018201604052801562000fe3578160200160208202803683370190505b50905060005b82518110156200112f57600160008483815181106200100c576200100c62001d43565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebf7a41e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620010ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010e0919062002087565b828281518110620010f557620010f562001d43565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280620011268162001d72565b91505062000fe9565b5060005b8351811015620012b9576003600085838151811062001156576200115662001d43565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1662001218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4f70734d616e616765723a20696e76616c6964207661756c7420696e2061727260448201527f61790000000000000000000000000000000000000000000000000000000000006064820152608401620004b9565b8381815181106200122d576200122d62001d43565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636823920a836040518263ffffffff1660e01b81526004016200126f9190620020a7565b600060405180830381600087803b1580156200128a57600080fd5b505af11580156200129f573d6000803e3d6000fd5b505050508080620012b09062001d72565b91505062001133565b50505050565b620012c96200159e565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600160205260409020541615620012fc57600080fd5b6040517f02fab49800000000000000000000000000000000000000000000000000000000815260009073__$c588408e34393e9644b73b59296e6d3047$__906302fab498906200135890879087908790600190600401620020f7565b602060405180830381865af415801562001376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139c919062002087565b6002805460018082019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8681169182179092556000908152602092835260409081902054815185841681529216928201929092529192507f390f4da03f9e74fca8b97195d2227fcc77f077755b8b358e42782b69c5faeb36910160405180910390a150505050565b6200146b6200159e565b6040517ffead81f00000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff80841660248301528216604482015273__$c588408e34393e9644b73b59296e6d3047$__9063fead81f09060640162000bfd565b620014eb6200159e565b73ffffffffffffffffffffffffffffffffffffffff811662001590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620004b9565b6200159b8162001621565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620004b9565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b613609806200214b83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715620016f957620016f9620016a4565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715620017495762001749620016a4565b604052919050565b600067ffffffffffffffff8211156200176e576200176e620016a4565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff811681146200159b57600080fd5b600082601f830112620017ad57600080fd5b81356020620017c6620017c08362001751565b620016ff565b82815260059290921b84018101918181019086841115620017e657600080fd5b8286015b848110156200180e578035620018008162001778565b8352918301918301620017ea565b509695505050505050565b600080604083850312156200182d57600080fd5b823567ffffffffffffffff8111156200184557600080fd5b62001853858286016200179b565b9250506020830135620018668162001778565b809150509250929050565b600082601f8301126200188357600080fd5b8135602062001896620017c08362001751565b82815260059290921b84018101918181019086841115620018b657600080fd5b8286015b848110156200180e578035620018d08162001778565b8352918301918301620018ba565b600082601f830112620018f057600080fd5b8135602062001903620017c08362001751565b82815260059290921b840181019181810190868411156200192357600080fd5b8286015b848110156200180e578035835291830191830162001927565b600080604083850312156200195457600080fd5b823567ffffffffffffffff808211156200196d57600080fd5b6200197b8683870162001871565b935060208501359150808211156200199257600080fd5b50620019a185828601620018de565b9150509250929050565b600082601f830112620019bd57600080fd5b813567ffffffffffffffff811115620019da57620019da620016a4565b62001a0d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601620016ff565b81815284602083860101111562001a2357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008086880360e081121562001a5b57600080fd5b873567ffffffffffffffff8082111562001a7457600080fd5b62001a828b838c01620019ab565b985060208a013591508082111562001a9957600080fd5b5062001aa88a828b01620019ab565b965050604088013594506060880135935060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808201121562001aea57600080fd5b5062001af5620016d3565b6080880135815260a088013560208201528092505060c087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101562001b5757835115158352928401929184019160010162001b37565b50909695505050505050565b60006020828403121562001b7657600080fd5b813562000b958162001778565b6000806040838503121562001b9757600080fd5b823567ffffffffffffffff8082111562001bb057600080fd5b6200197b868387016200179b565b60006020828403121562001bd157600080fd5b5035919050565b80151581146200159b57600080fd5b60008060006060848603121562001bfd57600080fd5b833562001c0a8162001778565b9250602084013562001c1c8162001778565b9150604084013562001c2e8162001bd8565b809150509250925092565b6000806040838503121562001c4d57600080fd5b823567ffffffffffffffff8082111562001c6657600080fd5b62001c74868387016200179b565b9350602085013591508082111562001c8b57600080fd5b50620019a18582860162001871565b60008060006060848603121562001cb057600080fd5b833567ffffffffffffffff8082111562001cc957600080fd5b62001cd787838801620019ab565b9450602086013591508082111562001cee57600080fd5b5062001cfd86828701620019ab565b925050604084013562001c2e8162001778565b6000806040838503121562001d2457600080fd5b823562001d318162001778565b91506020830135620018668162001778565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362001dcb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815180845260005b8181101562001dfa5760208185018101518683018201520162001ddc565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b600061016080835262001e4e8184018e62001dd2565b9050828103602084015262001e64818d62001dd2565b73ffffffffffffffffffffffffffffffffffffffff9b8c166040850152998b1660608401525050958816608087015260a086019490945260c0850192909252805160e085015260200151610100840152909316610120820152610140019190915292915050565b604080825283519082018190526000906020906060840190828701845b8281101562001f1c57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162001ee8565b50505073ffffffffffffffffffffffffffffffffffffffff9490941692019190915250919050565b6000602080838503121562001f5857600080fd5b825167ffffffffffffffff81111562001f7057600080fd5b8301601f8101851362001f8257600080fd5b805162001f93620017c08262001751565b81815260059190911b8201830190838101908783111562001fb357600080fd5b928401925b8284101562001fde57835162001fce8162001bd8565b8252928401929084019062001fb8565b979650505050505050565b606080825284519082018190526000906020906080840190828801845b828110156200203a57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162002006565b5050508381038285015285518082528683019183019060005b81811015620020715783518352928401929184019160010162002053565b5050809350505050826040830152949350505050565b6000602082840312156200209a57600080fd5b815162000b958162001778565b6020808252825182820181905260009190848201906040850190845b8181101562001b5757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101620020c3565b6080815260006200210c608083018762001dd2565b828103602084015262002120818762001dd2565b73ffffffffffffffffffffffffffffffffffffffff9590951660408401525050606001529291505056fe6102606040527f826f68b7f2dc717b262281384d6e69ddaba3805f6e37a8c771db2cc5d6ba4013610160523480156200003757600080fd5b5060405162003609380380620036098339810160408190526200005a91620003b3565b6040805180820190915260018152603160f81b60208201528a908a90829062000085826000620001a0565b6101205262000096816001620001a0565b61014052815160208084019190912060e052815190820120610100524660a0526200012460e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526200013833620001d9565b600662000146838262000529565b50600762000155828262000529565b5050506001600160a01b03978816610180529587166101a0529386166101c05261020092909252610220528051600b5560200151600c55909116610240526101e052506200064f9050565b6000602083511015620001c057620001b8836200022b565b9050620001d3565b81620001cd848262000529565b5060ff90505b92915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000262578260405163305a27a960e01b8152600401620002599190620005f5565b60405180910390fd5b80516200026f826200062a565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002aa57818101518382015260200162000290565b50506000910152565b600082601f830112620002c557600080fd5b81516001600160401b0380821115620002e257620002e262000277565b604051601f8301601f19908116603f011681019082821181831017156200030d576200030d62000277565b816040528381528660208588010111156200032757600080fd5b6200033a8460208301602089016200028d565b9695505050505050565b80516001600160a01b03811681146200035c57600080fd5b919050565b6000604082840312156200037457600080fd5b604080519081016001600160401b038111828210171562000399576200039962000277565b604052825181526020928301519281019290925250919050565b6000806000806000806000806000806101608b8d031215620003d457600080fd5b8a516001600160401b0380821115620003ec57600080fd5b620003fa8e838f01620002b3565b9b5060208d01519150808211156200041157600080fd5b50620004208d828e01620002b3565b9950506200043160408c0162000344565b97506200044160608c0162000344565b96506200045160808c0162000344565b955060a08b0151945060c08b01519350620004708c60e08d0162000361565b9250620004816101208c0162000344565b91506101408b015190509295989b9194979a5092959850565b600181811c90821680620004af57607f821691505b602082108103620004d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200052457600081815260208120601f850160051c81016020861015620004ff5750805b601f850160051c820191505b8181101562000520578281556001016200050b565b5050505b505050565b81516001600160401b0381111562000545576200054562000277565b6200055d816200055684546200049a565b84620004d6565b602080601f8311600181146200059557600084156200057c5750858301515b600019600386901b1c1916600185901b17855562000520565b600085815260208120601f198616915b82811015620005c657888601518255948401946001909101908401620005a5565b5085821015620005e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006168160408501602087016200028d565b601f01601f19169190910160400192915050565b80516020808301519190811015620004d05760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051612e97620007726000396000818161047d0152610aed0152600081816106d90152610f500152600081816105f601528181610abe01528181610ef50152610f9501526000818161042601528181610a9801528181610ec401528181610f190152610f7101526000818161069f0152610c6401526000818161052601528181610cbe0152818161106a0152818161120f01526115f20152600081816105cf0152610c420152600081816104ff015261076e0152600061115b0152600061113101526000611e9301526000611e6b01526000611dc601526000611df001526000611e1a0152612e976000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063715018a611610186578063a9059cbb116100e3578063b9844d8d11610097578063e1eda8f911610071578063e1eda8f91461069a578063f2fde38b146106c1578063fc1d3de2146106d457600080fd5b8063b9844d8d1461062b578063bca8371f1461064b578063dd62ed3e1461065457600080fd5b8063b1a9069c116100c8578063b1a9069c146105ca578063b470aade146105f1578063b6b55f251461061857600080fd5b8063a9059cbb146105a4578063b0ff1106146105b757600080fd5b806384b0196e1161013a57806395d89b411161011f57806395d89b4114610581578063981fc37214610589578063a457c2d71461059157600080fd5b806384b0196e146105485780638da5cb5b1461056357600080fd5b80637ecebe001161016b5780637ecebe00146104e757806381771329146104fa57806382dad8ac1461052157600080fd5b8063715018a6146104d75780637c5a227c146104df57600080fd5b80633644e5151161023f5780634473ad52116101f35780636b2f1417116101cd5780636b2f14171461045b5780636eeeaaa51461047857806370a08231146104c457600080fd5b80634473ad521461040157806363ceec65146104215780636823920a1461044857600080fd5b80633a98ef39116102245780633a98ef39146103e85780633d355f76146103f157806341ffb72e146103f957600080fd5b80633644e515146103cd57806339509351146103d557600080fd5b806323b872dd116102965780632f4f21e21161027b5780632f4f21e214610388578063313ce5671461039b578063341533d9146103aa57600080fd5b806323b872dd146103625780632e1a7d4d1461037557600080fd5b8063095ea7b3116102c7578063095ea7b314610316578063174e4ea61461033957806318160ddd1461035a57600080fd5b8063061e5844146102e357806306fdde03146102f8575b600080fd5b6102f66102f13660046128e0565b6106fb565b005b6103006108bd565b60405161030d91906129b0565b60405180910390f35b6103296103243660046129c3565b61094f565b604051901515815260200161030d565b61034c6103473660046129ef565b610969565b60405190815260200161030d565b61034c610998565b610329610370366004612a08565b6109aa565b6102f66103833660046129ef565b6109ce565b6102f66103963660046129c3565b6109dc565b6040516012815260200161030d565b600b54600c546103b8919082565b6040805192835260208301919091520161030d565b61034c610d8e565b6103296103e33660046129c3565b610d98565b61034c60085481565b610329610de4565b610329610df6565b61034c61040f366004612a49565b60096020526000908152604090205481565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b6102f6610456366004612aa5565b610e1b565b610463610ebf565b6040805192835290151560208301520161030d565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030d565b61034c6104d2366004612a49565b610fdf565b6102f661100e565b6103b8611022565b61034c6104f5366004612a49565b6110f8565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b610550611123565b60405161030d9796959493929190612b88565b60025473ffffffffffffffffffffffffffffffffffffffff1661049f565b6103006111c7565b61034c6111d6565b61032961059f3660046129c3565b6112a3565b6103296105b23660046129c3565b611374565b61034c6105c53660046129ef565b611382565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b6102f66106263660046129ef565b61139f565b61034c610639366004612a49565b600a6020526000908152604090205481565b61034c61012c81565b61034c610662366004612c47565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b6102f66106cf366004612a49565b6113a9565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b8342111561076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5661756c743a206578706972656420646561646c696e6500000000000000000060448201526064015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008733888861079a8c61145d565b60408051602081019790975273ffffffffffffffffffffffffffffffffffffffff95861690870152939092166060850152608084015260a083015260c082015260e001604051602081830303815290604052805190602001209050600061080082611492565b90506000610810828787876114da565b90508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5661756c743a20696e76616c6964207369676e617475726500000000000000006044820152606401610761565b6108b289338a611502565b505050505050505050565b6060600680546108cc90612c80565b80601f01602080910402602001604051908101604052809291908181526020018280546108f890612c80565b80156109455780601f1061091a57610100808354040283529160200191610945565b820191906000526020600020905b81548152906001019060200180831161092857829003601f168201915b5050505050905090565b60003361095d8185856116a3565b60019150505b92915050565b6000806000610976611022565b9092509050806109868386612cfc565b6109909190612d13565b949350505050565b60006109a5600854610969565b905090565b6000336109b8858285611857565b6109c385858561192e565b506001949350505050565b6109d9333383611502565b50565b6109e4610de4565b610a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5661756c743a2043616e6e6f74206a6f696e207661756c74207768656e206f7560448201527f7473696465206f6620656e7465722f657869742077696e646f770000000000006064820152608401610761565b6040517f07e7cc270000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000060248201523060448201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307e7cc2790606401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190612d4e565b90506000670de0b6b3a7640000610b848385612cfc565b610b8e9190612d13565b9050808311610c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5661756c743a2043616e6e6f74206a6f696e207768656e20666565206973206860448201527f6967686572207468616e20616d6f756e740000000000000000000000000000006064820152608401610761565b6000610c2b8285612d67565b90508315610d3057610c3d8582611bf1565b610c897f0000000000000000000000000000000000000000000000000000000000000000337f000000000000000000000000000000000000000000000000000000000000000087611d17565b6040517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906340c10f1990604401600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050505b6040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018690529081018290527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060600160405180910390a15050505050565b60006109a5611dac565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061095d9082908690610ddf908790612d7a565b6116a3565b600080610def610ebf565b9392505050565b6000806000610e03610ebf565b91509150808015610e145750600082115b9250505090565b610e23611ee4565b60005b8151811015610ebb57818181518110610e4157610e41612d8d565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663be040fb06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610e9057600080fd5b505af1158015610ea4573d6000803e3d6000fd5b505050508080610eb390612dbc565b915050610e26565b5050565b6000807f0000000000000000000000000000000000000000000000000000000000000000421015610ef35750600091829150565b7f0000000000000000000000000000000000000000000000000000000000000000610f3e7f000000000000000000000000000000000000000000000000000000000000000042612d67565b610f489190612d13565b91504261012c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610fba7f000000000000000000000000000000000000000000000000000000000000000087612cfc565b610fc49190612d7a565b610fce9190612d7a565b610fd89190612d7a565b1190509091565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604081205461096390610969565b611016611ee4565b6110206000611f65565b565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d59190612d4e565b91506008549050816000036110e957600191505b806000036110f45750805b9091565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a6020526040812054610963565b6000606080828080836111567f000000000000000000000000000000000000000000000000000000000000000083611fdc565b6111817f00000000000000000000000000000000000000000000000000000000000000006001611fdc565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6060600780546108cc90612c80565b600c54600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009291907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f9190612d4e565b6112999190612cfc565b6109a59190612d13565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610761565b6109c382868684036116a3565b60003361095d81858561192e565b600080600061138f611022565b9092509050816109868286612cfc565b6109d933826109dc565b6113b1611ee4565b73ffffffffffffffffffffffffffffffffffffffff8116611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610761565b6109d981611f65565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604090208054600181018255905b50919050565b600061096361149f611dac565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006114eb87878787612087565b915091506114f881612176565b5095945050505050565b61150a610df6565b611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5661756c743a2043616e6e6f742065786974207661756c74207768656e206f7560448201527f7473696465206f6620656e7465722f657869742077696e646f770000000000006064820152608401610761565b80156115a6576115a68382612329565b6040517f982755930000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff83811660248301527f00000000000000000000000000000000000000000000000000000000000000001690639827559390604401600060405180830381600087803b15801561163657600080fd5b505af115801561164a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018590527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364935001905060405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff8316611745576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff82166117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611928578181101561191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610761565b61192884848484036116a3565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166119d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8216611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081205490611aa483611382565b905080821015611b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600960205260408082208054859003905591861681529081208054839290611b7c908490612d7a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611be291815260200190565b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610761565b6000611c7982611382565b90508060086000828254611c8d9190612d7a565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081208054839290611cc7908490612d7a565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161184a565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611928908590612523565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015611e1257507f000000000000000000000000000000000000000000000000000000000000000046145b15611e3c57507f000000000000000000000000000000000000000000000000000000000000000090565b6109a5604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60025473ffffffffffffffffffffffffffffffffffffffff163314611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610761565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff8314611ff657611fef83612637565b9050610963565b81805461200290612c80565b80601f016020809104026020016040519081016040528092919081815260200182805461202e90612c80565b801561207b5780601f106120505761010080835404028352916020019161207b565b820191906000526020600020905b81548152906001019060200180831161205e57829003601f168201915b50505050509050610963565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156120be575060009050600361216d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612112573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166121665760006001925092505061216d565b9150600090505b94509492505050565b600081600481111561218a5761218a612df4565b036121925750565b60018160048111156121a6576121a6612df4565b0361220d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610761565b600281600481111561222157612221612df4565b03612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610761565b600381600481111561229c5761229c612df4565b036109d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff82166123cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812054906123fc83611382565b90508082101561248e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604081208284039055600880548392906124ca908490612d67565b909155505060405183815260009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6000612585826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126769092919063ffffffff16565b90508051600014806125a65750808060200190518101906125a69190612e23565b612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610761565b505050565b6060600061264483612685565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b606061099084846000856126c6565b600060ff8216601f811115610963576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082471015612758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610761565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127819190612e45565b60006040518083038185875af1925050503d80600081146127be576040519150601f19603f3d011682016040523d82523d6000602084013e6127c3565b606091505b50915091506127d4878383876127df565b979650505050505050565b6060831561287557825160000361286e5773ffffffffffffffffffffffffffffffffffffffff85163b61286e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610761565b5081610990565b610990838381511561288a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076191906129b0565b73ffffffffffffffffffffffffffffffffffffffff811681146109d957600080fd5b60008060008060008060c087890312156128f957600080fd5b8635612904816128be565b95506020870135945060408701359350606087013560ff8116811461292857600080fd5b9598949750929560808101359460a0909101359350915050565b60005b8381101561295d578181015183820152602001612945565b50506000910152565b6000815180845261297e816020860160208601612942565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610def6020830184612966565b600080604083850312156129d657600080fd5b82356129e1816128be565b946020939093013593505050565b600060208284031215612a0157600080fd5b5035919050565b600080600060608486031215612a1d57600080fd5b8335612a28816128be565b92506020840135612a38816128be565b929592945050506040919091013590565b600060208284031215612a5b57600080fd5b8135610def816128be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8035612aa0816128be565b919050565b60006020808385031215612ab857600080fd5b823567ffffffffffffffff80821115612ad057600080fd5b818501915085601f830112612ae457600080fd5b813581811115612af657612af6612a66565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715612b3957612b39612a66565b604052918252848201925083810185019188831115612b5757600080fd5b938501935b82851015612b7c57612b6d85612a95565b84529385019392850192612b5c565b98975050505050505050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152612bc460e084018a612966565b8381036040850152612bd6818a612966565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015612c3557835183529284019291840191600101612c19565b50909c9b505050505050505050505050565b60008060408385031215612c5a57600080fd5b8235612c65816128be565b91506020830135612c75816128be565b809150509250929050565b600181811c90821680612c9457607f821691505b60208210810361148c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761096357610963612ccd565b600082612d49577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612d6057600080fd5b5051919050565b8181038181111561096357610963612ccd565b8082018082111561096357610963612ccd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ded57612ded612ccd565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215612e3557600080fd5b81518015158114610def57600080fd5b60008251612e57818460208701612942565b919091019291505056fea26469706673582212208eb65146c9730b3f8a30161afade6d0783f540d14bdd5d5796102ae071443b0364736f6c63430008130033a26469706673582212201ed79cff59d0cdb05956b4ee28fba433ead98413fc84ee1a4e276ab6326cc92364736f6c63430008130033", + "linkReferences": { + "contracts/core/OpsManagerLib.sol": { + "OpsManagerLib": [ + { + "length": 20, + "start": 2338 + }, + { + "length": 20, + "start": 3705 + }, + { + "length": 20, + "start": 3908 + }, + { + "length": 20, + "start": 4786 + }, + { + "length": 20, + "start": 5789 + }, + { + "length": 20, + "start": 6196 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/core/OpsManagerLib.sol": { + "OpsManagerLib": [ + { + "length": 20, + "start": 1452 + }, + { + "length": 20, + "start": 2819 + }, + { + "length": 20, + "start": 3022 + }, + { + "length": 20, + "start": 3900 + }, + { + "length": 20, + "start": 4903 + }, + { + "length": 20, + "start": 5310 + } + ] + } + } +} diff --git a/apps/dapp/abi/contracts/core/OpsManagerLib.sol/OpsManagerLib.json b/apps/dapp/abi/contracts/core/OpsManagerLib.sol/OpsManagerLib.json new file mode 100644 index 000000000..ffde12e57 --- /dev/null +++ b/apps/dapp/abi/contracts/core/OpsManagerLib.sol/OpsManagerLib.json @@ -0,0 +1,35 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OpsManagerLib", + "sourceName": "contracts/core/OpsManagerLib.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract Vault[]", + "name": "vaults", + "type": "Vault[]" + }, + { + "internalType": "contract TreasuryFarmingRevenue", + "name": "farmingPool", + "type": "TreasuryFarmingRevenue" + } + ], + "name": "requiresRebalance", + "outputs": [ + { + "internalType": "bool[]", + "name": "", + "type": "bool[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x613c6a61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610620000845760003560e01c8063789654b9116200005f578063789654b91462000125578063c5f0b116146200014a578063fead81f0146200016f57600080fd5b806302fab49814620000895780630a1d273e14620000d85780631e2e006514620000ff575b600080fd5b8180156200009657600080fd5b50620000ae620000a836600462001044565b62000194565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b818015620000e557600080fd5b50620000fd620000f7366004620010da565b620002f1565b005b62000116620001103660046200116d565b6200042a565b604051620000cf91906200122c565b8180156200013257600080fd5b50620000fd6200014436600462001274565b620006b1565b8180156200015757600080fd5b50620000fd620001693660046200131f565b62000a3b565b8180156200017c57600080fd5b50620000fd6200018e366004620013f8565b62000dbd565b600080858585604051620001a89062000eec565b620001b693929190620014a5565b604051809103906000f080158015620001d3573d6000803e3d6000fd5b50905080604051620001e59062000efa565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156200021f573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff8581166000908152602086905260409081902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169383169384179055517fa746f93a00000000000000000000000000000000000000000000000000000000815260048101929092526001602483015282169063a746f93a90604401600060405180830381600087803b158015620002ce57600080fd5b505af1158015620002e3573d6000803e3d6000fd5b509298975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152602086815260408083205481517febf7a41e00000000000000000000000000000000000000000000000000000000815291519394169263ebf7a41e926004808401939192918290030181865afa1580156200036d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003939190620014f5565b6040517fa746f93a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284151560248301529192509082169063a746f93a906044015b600060405180830381600087803b1580156200040a57600080fd5b505af11580156200041f573d6000803e3d6000fd5b505050505050505050565b60606000835167ffffffffffffffff8111156200044b576200044b62000f08565b60405190808252806020026020018201604052801562000475578160200160208202803683370190505b50905060005b8451811015620006a75760008582815181106200049c576200049c6200151c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636b2f14176040518163ffffffff1660e01b81526004016040805180830381865afa158015620004ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051491906200154b565b915050801562000525575062000692565b8582815181106200053a576200053a6200151c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663981fc3726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200058d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b3919062001573565b8573ffffffffffffffffffffffffffffffffffffffff1663ce7c2ac2888581518110620005e457620005e46200151c565b60200260200101516040518263ffffffff1660e01b815260040162000625919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa15801562000643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000669919062001573565b14158383815181106200068057620006806200151c565b91151560209283029190910190910152505b806200069e81620015bc565b9150506200047b565b5090505b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff16636b2f14176040518163ffffffff1660e01b81526004016040805180830381865afa158015620006fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072491906200154b565b9150508015620007e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4661726d696e67526576656e75654d616e616765723a2043616e6e6f7420726560448201527f62616c616e6365207661756c747320696e20746865697220657869742f656e7460648201527f72792077696e646f770000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6040517fce7c2ac200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526000919084169063ce7c2ac290602401602060405180830381865afa15801562000852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000878919062001573565b905060008473ffffffffffffffffffffffffffffffffffffffff1663981fc3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ee919062001573565b905081811115620009ad5773ffffffffffffffffffffffffffffffffffffffff84166386c011db86620009228585620015f7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156200098e57600080fd5b505af1158015620009a3573d6000803e3d6000fd5b5050505062000a34565b81811015620009df5773ffffffffffffffffffffffffffffffffffffffff84166387983d1386620009228486620015f7565b6040517fddeae03300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285169063ddeae03390602401620003ef565b5050505050565b815183511462000ace576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4578706f737572657320616e6420726576616c20616d6f756e7473206172726160448201527f79206d757374206265207468652073616d65206c656e677468000000000000006064820152608401620007d8565b60005b835181101562000db757600082600086848151811062000af55762000af56200151c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebf7a41e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ba3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bc99190620014f5565b905060008173ffffffffffffffffffffffffffffffffffffffff16633f3a0c5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c3f919062001573565b905084838151811062000c565762000c566200151c565b602002602001015181111562000d05578173ffffffffffffffffffffffffffffffffffffffff1663064c97d686858151811062000c975762000c976200151c565b60200260200101518362000cac9190620015f7565b6040518263ffffffff1660e01b815260040162000ccb91815260200190565b600060405180830381600087803b15801562000ce657600080fd5b505af115801562000cfb573d6000803e3d6000fd5b5050505062000d9f565b8173ffffffffffffffffffffffffffffffffffffffff1663057ac8488287868151811062000d375762000d376200151c565b602002602001015162000d4b9190620015f7565b6040518263ffffffff1660e01b815260040162000d6a91815260200190565b600060405180830381600087803b15801562000d8557600080fd5b505af115801562000d9a573d6000803e3d6000fd5b505050505b5050808062000dae90620015bc565b91505062000ad1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152602085815260408083205481517febf7a41e00000000000000000000000000000000000000000000000000000000815291519394169263ebf7a41e926004808401939192918290030181865afa15801562000e39573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e5f9190620014f5565b6040517fae85d64100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063ae85d64190602401600060405180830381600087803b15801562000ecd57600080fd5b505af115801562000ee2573d6000803e3d6000fd5b5050505050505050565b611bca806200160e83390190565b610a5d80620031d883390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562000f815762000f8162000f08565b604052919050565b600082601f83011262000f9b57600080fd5b813567ffffffffffffffff81111562000fb85762000fb862000f08565b62000feb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162000f37565b8181528460208386010111156200100157600080fd5b816020850160208301376000918101602001919091529392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146200104157600080fd5b50565b600080600080608085870312156200105b57600080fd5b843567ffffffffffffffff808211156200107457600080fd5b620010828883890162000f89565b955060208701359150808211156200109957600080fd5b50620010a88782880162000f89565b9350506040850135620010bb816200101e565b9396929550929360600135925050565b80151581146200104157600080fd5b60008060008060808587031215620010f157600080fd5b84359350602085013562001105816200101e565b9250604085013562001117816200101e565b915060608501356200112981620010cb565b939692955090935050565b600067ffffffffffffffff82111562001151576200115162000f08565b5060051b60200190565b803562001168816200101e565b919050565b600080604083850312156200118157600080fd5b823567ffffffffffffffff8111156200119957600080fd5b8301601f81018513620011ab57600080fd5b80356020620011c4620011be8362001134565b62000f37565b82815260059290921b83018101918181019088841115620011e457600080fd5b938201935b838510156200120f578435620011ff816200101e565b82529382019390820190620011e9565b95506200122090508682016200115b565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156200126857835115158352928401929184019160010162001248565b50909695505050505050565b600080604083850312156200128857600080fd5b823562001295816200101e565b91506020830135620012a7816200101e565b809150509250929050565b600082601f830112620012c457600080fd5b81356020620012d7620011be8362001134565b82815260059290921b84018101918181019086841115620012f757600080fd5b8286015b84811015620013145780358352918301918301620012fb565b509695505050505050565b6000806000606084860312156200133557600080fd5b833567ffffffffffffffff808211156200134e57600080fd5b818601915086601f8301126200136357600080fd5b8135602062001376620011be8362001134565b82815260059290921b8401810191818101908a8411156200139657600080fd5b948201945b83861015620013c1578535620013b1816200101e565b825294820194908201906200139b565b97505087013592505080821115620013d857600080fd5b50620013e786828701620012b2565b925050604084013590509250925092565b6000806000606084860312156200140e57600080fd5b83359250602084013562001422816200101e565b9150604084013562001434816200101e565b809150509250925092565b6000815180845260005b81811015620014675760208185018101518683018201520162001449565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b606081526000620014ba60608301866200143f565b8281036020840152620014ce81866200143f565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b6000602082840312156200150857600080fd5b815162001515816200101e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080604083850312156200155f57600080fd5b825191506020830151620012a781620010cb565b6000602082840312156200158657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620015f057620015f06200158d565b5060010190565b81810381811115620006ab57620006ab6200158d56fe60806040523480156200001157600080fd5b5060405162001bca38038062001bca8339810160408190526200003491620001a0565b828262000041336200008b565b60046200004f8382620002bc565b5060056200005e8282620002bc565b5050600880546001600160a01b0319166001600160a01b0393909316929092179091555062000388915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200010357600080fd5b81516001600160401b0380821115620001205762000120620000db565b604051601f8301601f19908116603f011681019082821181831017156200014b576200014b620000db565b816040528381526020925086838588010111156200016857600080fd5b600091505b838210156200018c57858201830151818301840152908201906200016d565b600093810190920192909252949350505050565b600080600060608486031215620001b657600080fd5b83516001600160401b0380821115620001ce57600080fd5b620001dc87838801620000f1565b94506020860151915080821115620001f357600080fd5b506200020286828701620000f1565b604086015190935090506001600160a01b03811681146200022257600080fd5b809150509250925092565b600181811c908216806200024257607f821691505b6020821081036200026357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b757600081815260208120601f850160051c81016020861015620002925750805b601f850160051c820191505b81811015620002b3578281556001016200029e565b5050505b505050565b81516001600160401b03811115620002d857620002d8620000db565b620002f081620002e984546200022d565b8462000269565b602080601f8311600181146200032857600084156200030f5750858301515b600019600386901b1c1916600185901b178555620002b3565b600085815260208120601f198616915b82811015620003595788860151825594840194600190910190840162000338565b5085821015620003785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61183280620003986000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063715018a611610104578063a746f93a116100a2578063be040fb011610071578063be040fb014610420578063c2ba474414610428578063dd62ed3e1461044b578063f2fde38b1461049157600080fd5b8063a746f93a146103d4578063a9059cbb146103e7578063ae85d641146103fa578063b0ff11061461040d57600080fd5b80638da5cb5b116100de5780638da5cb5b1461038857806395d89b41146103a657806398275593146103ae578063a457c2d7146103c157600080fd5b8063715018a6146103435780637c5a227c1461034b578063873924e41461036857600080fd5b8063313ce5671161017c5780634046ebae1161014b5780634046ebae146102b857806340c10f19146102fd5780634473ad521461031057806370a082311461033057600080fd5b8063313ce5671461028457806339509351146102935780633a98ef39146102a65780633f3a0c5b146102af57600080fd5b8063095ea7b3116101b8578063095ea7b314610225578063174e4ea61461024857806318160ddd1461026957806323b872dd1461027157600080fd5b8063057ac848146101df578063064c97d6146101f457806306fdde0314610207575b600080fd5b6101f26101ed366004611539565b6104a4565b005b6101f2610202366004611539565b610506565b61020f610560565b60405161021c9190611552565b60405180910390f35b6102386102333660046115e0565b6105f2565b604051901515815260200161021c565b61025b610256366004611539565b61060c565b60405190815260200161021c565b61025b61063b565b61023861027f36600461160c565b61064d565b6040516012815260200161021c565b6102386102a13660046115e0565b610671565b61025b60065481565b61025b60095481565b600b546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6101f261030b3660046115e0565b6106bd565b61025b61031e36600461164d565b60076020526000908152604090205481565b61025b61033e36600461164d565b610760565b6101f261078f565b6103536107a3565b6040805192835260208301919091520161021c565b6008546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff166102d8565b61020f6107c6565b6101f26103bc366004611671565b6107d5565b6102386103cf3660046115e0565b610900565b6101f26103e23660046116a1565b6109d1565b6102386103f53660046115e0565b610a60565b6101f261040836600461164d565b610a6e565b61025b61041b366004611539565b610aef565b6101f2610b0c565b61023861043636600461164d565b600a6020526000908152604090205460ff1681565b61025b6104593660046116d4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b6101f261049f36600461164d565b610b1e565b6104ac610bd5565b6009805490829060006104bf8385611731565b90915550506009546040805183815260208101929092527fa59e96b3c1d252b5b2fd20d08a77732f3af73142db0af5e50ced94b558c7fa0591015b60405180910390a15050565b61050e610bd5565b6009805490829060006105218385611744565b90915550506009546040805183815260208101929092527f307076957a8ce6e01b7d381f303646d1011fb16a9842dfa0859a9eddfd312e4291016104fa565b60606004805461056f90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461059b90611757565b80156105e85780601f106105bd576101008083540402835291602001916105e8565b820191906000526020600020905b8154815290600101906020018083116105cb57829003601f168201915b5050505050905090565b600033610600818585610c56565b60019150505b92915050565b60008060006106196107a3565b90925090508061062983866117aa565b61063391906117c1565b949350505050565b600061064860065461060c565b905090565b60003361065b858285610e0a565b610666858585610ee1565b506001949350505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060090829086906106b8908790611731565b610c56565b336000908152600a602052604090205460ff1661073b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4578706f737572653a2063616c6c6572206973206e6f742061207661756c740060448201526064015b60405180910390fd5b61074582826111a4565b80600960008282546107579190611731565b90915550505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120546106069061060c565b610797610bd5565b6107a160006112ca565b565b60095460065460008290036107b757600191505b806000036107c25750805b9091565b60606005805461056f90611757565b6107df338361133f565b81600960008282546107f19190611744565b9091555050600b5473ffffffffffffffffffffffffffffffffffffffff16156108a157600b546040517f4d4c23a80000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff838116602483015290911690634d4c23a890604401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050505b6008546040805173ffffffffffffffffffffffffffffffffffffffff928316815233602082015291831690820152606081018390527fee02732fab40ece8284c756220846dff4b8d32058b86b35b4f0459bf172fcef0906080016104fa565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610732565b6106668286868403610c56565b6109d9610bd5565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600a602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f73d5b2f10126b99916a4c71d591a354f52ed52ca3b0278eaf584e35220addb7791016104fa565b600033610600818585610ee1565b610a76610bd5565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f111c6aeb2006d748bdae2ddf082866e6ce7eb3d48ef324b5d9547570f5694e4f9060200160405180910390a150565b6000806000610afc6107a3565b90925090508161062982866117aa565b6107a1610b1833610760565b336107d5565b610b26610bd5565b73ffffffffffffffffffffffffffffffffffffffff8116610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610732565b610bd2816112ca565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610732565b73ffffffffffffffffffffffffffffffffffffffff8316610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610edb5781811015610ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610732565b610edb8484848403610c56565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120549061105783610aef565b9050808210156110e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260076020526040808220805485900390559186168152908120805483929061112f908490611731565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161119591815260200190565b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610732565b600061122c82610aef565b905080600660008282546112409190611731565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120805483929061127a908490611731565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610dfd565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff82166113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120549061141283610aef565b9050808210156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208284039055600680548392906114e0908490611744565b909155505060405183815260009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b60006020828403121561154b57600080fd5b5035919050565b600060208083528351808285015260005b8181101561157f57858101830151858201604001528201611563565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bd257600080fd5b600080604083850312156115f357600080fd5b82356115fe816115be565b946020939093013593505050565b60008060006060848603121561162157600080fd5b833561162c816115be565b9250602084013561163c816115be565b929592945050506040919091013590565b60006020828403121561165f57600080fd5b813561166a816115be565b9392505050565b6000806040838503121561168457600080fd5b823591506020830135611696816115be565b809150509250929050565b600080604083850312156116b457600080fd5b82356116bf816115be565b91506020830135801515811461169657600080fd5b600080604083850312156116e757600080fd5b82356116f2816115be565b91506020830135611696816115be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561060657610606611702565b8181038181111561060657610606611702565b600181811c9082168061176b57607f821691505b6020821081036117a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808202811582820484141761060657610606611702565b6000826117f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122023d50523323278d5d51dbe41fe9be37b11c00f4d77ff9097ffba9f3a850c9a6a64736f6c6343000813003360a060405234801561001057600080fd5b50604051610a5d380380610a5d83398101604081905261002f91610099565b61003833610049565b6001600160a01b03166080526100c9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ab57600080fd5b81516001600160a01b03811681146100c257600080fd5b9392505050565b6080516109726100eb600039600081816101d8015261052a01526109726000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063de5e63301161005b578063de5e6330146101ca578063ebf7a41e146101d3578063f2fde38b146101fa57600080fd5b80638da5cb5b14610158578063ce7c2ac214610197578063ddeae033146101b757600080fd5b8063715018a6116100b2578063715018a61461012a57806386c011db1461013257806387983d131461014557600080fd5b806326603b95146100d95780633a98ef391461010c57806363ec512d14610115575b600080fd5b6100f96100e736600461082a565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6100f960025481565b61012861012336600461084c565b61020d565b005b61012861028a565b610128610140366004610865565b61029e565b610128610153366004610865565b61039d565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b6100f96101a536600461082a565b60016020526000908152604090205481565b6101286101c536600461082a565b610494565b6100f960045481565b6101727f000000000000000000000000000000000000000000000000000000000000000081565b61012861020836600461082a565b61064f565b61021561070b565b60025461022a670de0b6b3a7640000836108be565b61023491906108db565b600460008282546102459190610916565b90915550506004546040805183815260208101929092527f44c8e79be0ba50742684a585db3a9db56735a204cfa14b6d54fadc2b141ebd89910160405180910390a150565b61029261070b565b61029c600061078c565b565b6102a661070b565b6102af82610494565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906102e4908490610916565b9250508190555080600260008282546102fd9190610916565b909155505060045461030f90826108be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190610344908490610916565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527f50de8324aee226699209f9c49e31220e9e7e4f7a3d2d76060d913995cd11148e91015b60405180910390a15050565b6103a561070b565b6103ae82610494565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906103e3908490610929565b9250508190555080600260008282546103fc9190610929565b909155505060045461040e90826108be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190610443908490610929565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527f7f057847ef731c18392c410072b87537e1ebd5fc3ca97d90d44e23f10010e2919101610391565b60045473ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205490916104c8916108be565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812054919250906104fc9083610929565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526003602052604090208490559091507f0000000000000000000000000000000000000000000000000000000000000000166340c10f1984610562670de0b6b3a7640000856108db565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b505050507fc15f451120b13b6b40c6ad6203614ab3088308bef9150c0d6f46ea79bf46422483670de0b6b3a76400008361061b91906108db565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520160405180910390a1505050565b61065761070b565b73ffffffffffffffffffffffffffffffffffffffff81166106ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6107088161078c565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461029c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f6565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461082557600080fd5b919050565b60006020828403121561083c57600080fd5b61084582610801565b9392505050565b60006020828403121561085e57600080fd5b5035919050565b6000806040838503121561087857600080fd5b61088183610801565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108d5576108d561088f565b92915050565b600082610911577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156108d5576108d561088f565b818103818111156108d5576108d561088f56fea264697066735822122082ef6a9750978f29dd4b1407381b94710f57d0208bca6046e88541cf4adcf35664736f6c63430008130033a2646970667358221220cd3a82c19e50d87f498e952e6b804fe678f38a5e62a5e0bc46ad3b3bebba279f64736f6c63430008130033", + "deployedBytecode": "0x7300000000000000000000000000000000000000003014608060405260043610620000845760003560e01c8063789654b9116200005f578063789654b91462000125578063c5f0b116146200014a578063fead81f0146200016f57600080fd5b806302fab49814620000895780630a1d273e14620000d85780631e2e006514620000ff575b600080fd5b8180156200009657600080fd5b50620000ae620000a836600462001044565b62000194565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b818015620000e557600080fd5b50620000fd620000f7366004620010da565b620002f1565b005b62000116620001103660046200116d565b6200042a565b604051620000cf91906200122c565b8180156200013257600080fd5b50620000fd6200014436600462001274565b620006b1565b8180156200015757600080fd5b50620000fd620001693660046200131f565b62000a3b565b8180156200017c57600080fd5b50620000fd6200018e366004620013f8565b62000dbd565b600080858585604051620001a89062000eec565b620001b693929190620014a5565b604051809103906000f080158015620001d3573d6000803e3d6000fd5b50905080604051620001e59062000efa565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156200021f573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff8581166000908152602086905260409081902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169383169384179055517fa746f93a00000000000000000000000000000000000000000000000000000000815260048101929092526001602483015282169063a746f93a90604401600060405180830381600087803b158015620002ce57600080fd5b505af1158015620002e3573d6000803e3d6000fd5b509298975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152602086815260408083205481517febf7a41e00000000000000000000000000000000000000000000000000000000815291519394169263ebf7a41e926004808401939192918290030181865afa1580156200036d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003939190620014f5565b6040517fa746f93a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284151560248301529192509082169063a746f93a906044015b600060405180830381600087803b1580156200040a57600080fd5b505af11580156200041f573d6000803e3d6000fd5b505050505050505050565b60606000835167ffffffffffffffff8111156200044b576200044b62000f08565b60405190808252806020026020018201604052801562000475578160200160208202803683370190505b50905060005b8451811015620006a75760008582815181106200049c576200049c6200151c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636b2f14176040518163ffffffff1660e01b81526004016040805180830381865afa158015620004ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051491906200154b565b915050801562000525575062000692565b8582815181106200053a576200053a6200151c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663981fc3726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200058d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b3919062001573565b8573ffffffffffffffffffffffffffffffffffffffff1663ce7c2ac2888581518110620005e457620005e46200151c565b60200260200101516040518263ffffffff1660e01b815260040162000625919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa15801562000643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000669919062001573565b14158383815181106200068057620006806200151c565b91151560209283029190910190910152505b806200069e81620015bc565b9150506200047b565b5090505b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff16636b2f14176040518163ffffffff1660e01b81526004016040805180830381865afa158015620006fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072491906200154b565b9150508015620007e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4661726d696e67526576656e75654d616e616765723a2043616e6e6f7420726560448201527f62616c616e6365207661756c747320696e20746865697220657869742f656e7460648201527f72792077696e646f770000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6040517fce7c2ac200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526000919084169063ce7c2ac290602401602060405180830381865afa15801562000852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000878919062001573565b905060008473ffffffffffffffffffffffffffffffffffffffff1663981fc3726040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ee919062001573565b905081811115620009ad5773ffffffffffffffffffffffffffffffffffffffff84166386c011db86620009228585620015f7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156200098e57600080fd5b505af1158015620009a3573d6000803e3d6000fd5b5050505062000a34565b81811015620009df5773ffffffffffffffffffffffffffffffffffffffff84166387983d1386620009228486620015f7565b6040517fddeae03300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285169063ddeae03390602401620003ef565b5050505050565b815183511462000ace576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4578706f737572657320616e6420726576616c20616d6f756e7473206172726160448201527f79206d757374206265207468652073616d65206c656e677468000000000000006064820152608401620007d8565b60005b835181101562000db757600082600086848151811062000af55762000af56200151c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebf7a41e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ba3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bc99190620014f5565b905060008173ffffffffffffffffffffffffffffffffffffffff16633f3a0c5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c3f919062001573565b905084838151811062000c565762000c566200151c565b602002602001015181111562000d05578173ffffffffffffffffffffffffffffffffffffffff1663064c97d686858151811062000c975762000c976200151c565b60200260200101518362000cac9190620015f7565b6040518263ffffffff1660e01b815260040162000ccb91815260200190565b600060405180830381600087803b15801562000ce657600080fd5b505af115801562000cfb573d6000803e3d6000fd5b5050505062000d9f565b8173ffffffffffffffffffffffffffffffffffffffff1663057ac8488287868151811062000d375762000d376200151c565b602002602001015162000d4b9190620015f7565b6040518263ffffffff1660e01b815260040162000d6a91815260200190565b600060405180830381600087803b15801562000d8557600080fd5b505af115801562000d9a573d6000803e3d6000fd5b505050505b5050808062000dae90620015bc565b91505062000ad1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152602085815260408083205481517febf7a41e00000000000000000000000000000000000000000000000000000000815291519394169263ebf7a41e926004808401939192918290030181865afa15801562000e39573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e5f9190620014f5565b6040517fae85d64100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063ae85d64190602401600060405180830381600087803b15801562000ecd57600080fd5b505af115801562000ee2573d6000803e3d6000fd5b5050505050505050565b611bca806200160e83390190565b610a5d80620031d883390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562000f815762000f8162000f08565b604052919050565b600082601f83011262000f9b57600080fd5b813567ffffffffffffffff81111562000fb85762000fb862000f08565b62000feb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162000f37565b8181528460208386010111156200100157600080fd5b816020850160208301376000918101602001919091529392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146200104157600080fd5b50565b600080600080608085870312156200105b57600080fd5b843567ffffffffffffffff808211156200107457600080fd5b620010828883890162000f89565b955060208701359150808211156200109957600080fd5b50620010a88782880162000f89565b9350506040850135620010bb816200101e565b9396929550929360600135925050565b80151581146200104157600080fd5b60008060008060808587031215620010f157600080fd5b84359350602085013562001105816200101e565b9250604085013562001117816200101e565b915060608501356200112981620010cb565b939692955090935050565b600067ffffffffffffffff82111562001151576200115162000f08565b5060051b60200190565b803562001168816200101e565b919050565b600080604083850312156200118157600080fd5b823567ffffffffffffffff8111156200119957600080fd5b8301601f81018513620011ab57600080fd5b80356020620011c4620011be8362001134565b62000f37565b82815260059290921b83018101918181019088841115620011e457600080fd5b938201935b838510156200120f578435620011ff816200101e565b82529382019390820190620011e9565b95506200122090508682016200115b565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156200126857835115158352928401929184019160010162001248565b50909695505050505050565b600080604083850312156200128857600080fd5b823562001295816200101e565b91506020830135620012a7816200101e565b809150509250929050565b600082601f830112620012c457600080fd5b81356020620012d7620011be8362001134565b82815260059290921b84018101918181019086841115620012f757600080fd5b8286015b84811015620013145780358352918301918301620012fb565b509695505050505050565b6000806000606084860312156200133557600080fd5b833567ffffffffffffffff808211156200134e57600080fd5b818601915086601f8301126200136357600080fd5b8135602062001376620011be8362001134565b82815260059290921b8401810191818101908a8411156200139657600080fd5b948201945b83861015620013c1578535620013b1816200101e565b825294820194908201906200139b565b97505087013592505080821115620013d857600080fd5b50620013e786828701620012b2565b925050604084013590509250925092565b6000806000606084860312156200140e57600080fd5b83359250602084013562001422816200101e565b9150604084013562001434816200101e565b809150509250925092565b6000815180845260005b81811015620014675760208185018101518683018201520162001449565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b606081526000620014ba60608301866200143f565b8281036020840152620014ce81866200143f565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b6000602082840312156200150857600080fd5b815162001515816200101e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080604083850312156200155f57600080fd5b825191506020830151620012a781620010cb565b6000602082840312156200158657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620015f057620015f06200158d565b5060010190565b81810381811115620006ab57620006ab6200158d56fe60806040523480156200001157600080fd5b5060405162001bca38038062001bca8339810160408190526200003491620001a0565b828262000041336200008b565b60046200004f8382620002bc565b5060056200005e8282620002bc565b5050600880546001600160a01b0319166001600160a01b0393909316929092179091555062000388915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200010357600080fd5b81516001600160401b0380821115620001205762000120620000db565b604051601f8301601f19908116603f011681019082821181831017156200014b576200014b620000db565b816040528381526020925086838588010111156200016857600080fd5b600091505b838210156200018c57858201830151818301840152908201906200016d565b600093810190920192909252949350505050565b600080600060608486031215620001b657600080fd5b83516001600160401b0380821115620001ce57600080fd5b620001dc87838801620000f1565b94506020860151915080821115620001f357600080fd5b506200020286828701620000f1565b604086015190935090506001600160a01b03811681146200022257600080fd5b809150509250925092565b600181811c908216806200024257607f821691505b6020821081036200026357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002b757600081815260208120601f850160051c81016020861015620002925750805b601f850160051c820191505b81811015620002b3578281556001016200029e565b5050505b505050565b81516001600160401b03811115620002d857620002d8620000db565b620002f081620002e984546200022d565b8462000269565b602080601f8311600181146200032857600084156200030f5750858301515b600019600386901b1c1916600185901b178555620002b3565b600085815260208120601f198616915b82811015620003595788860151825594840194600190910190840162000338565b5085821015620003785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61183280620003986000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063715018a611610104578063a746f93a116100a2578063be040fb011610071578063be040fb014610420578063c2ba474414610428578063dd62ed3e1461044b578063f2fde38b1461049157600080fd5b8063a746f93a146103d4578063a9059cbb146103e7578063ae85d641146103fa578063b0ff11061461040d57600080fd5b80638da5cb5b116100de5780638da5cb5b1461038857806395d89b41146103a657806398275593146103ae578063a457c2d7146103c157600080fd5b8063715018a6146103435780637c5a227c1461034b578063873924e41461036857600080fd5b8063313ce5671161017c5780634046ebae1161014b5780634046ebae146102b857806340c10f19146102fd5780634473ad521461031057806370a082311461033057600080fd5b8063313ce5671461028457806339509351146102935780633a98ef39146102a65780633f3a0c5b146102af57600080fd5b8063095ea7b3116101b8578063095ea7b314610225578063174e4ea61461024857806318160ddd1461026957806323b872dd1461027157600080fd5b8063057ac848146101df578063064c97d6146101f457806306fdde0314610207575b600080fd5b6101f26101ed366004611539565b6104a4565b005b6101f2610202366004611539565b610506565b61020f610560565b60405161021c9190611552565b60405180910390f35b6102386102333660046115e0565b6105f2565b604051901515815260200161021c565b61025b610256366004611539565b61060c565b60405190815260200161021c565b61025b61063b565b61023861027f36600461160c565b61064d565b6040516012815260200161021c565b6102386102a13660046115e0565b610671565b61025b60065481565b61025b60095481565b600b546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021c565b6101f261030b3660046115e0565b6106bd565b61025b61031e36600461164d565b60076020526000908152604090205481565b61025b61033e36600461164d565b610760565b6101f261078f565b6103536107a3565b6040805192835260208301919091520161021c565b6008546102d89073ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff166102d8565b61020f6107c6565b6101f26103bc366004611671565b6107d5565b6102386103cf3660046115e0565b610900565b6101f26103e23660046116a1565b6109d1565b6102386103f53660046115e0565b610a60565b6101f261040836600461164d565b610a6e565b61025b61041b366004611539565b610aef565b6101f2610b0c565b61023861043636600461164d565b600a6020526000908152604090205460ff1681565b61025b6104593660046116d4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b6101f261049f36600461164d565b610b1e565b6104ac610bd5565b6009805490829060006104bf8385611731565b90915550506009546040805183815260208101929092527fa59e96b3c1d252b5b2fd20d08a77732f3af73142db0af5e50ced94b558c7fa0591015b60405180910390a15050565b61050e610bd5565b6009805490829060006105218385611744565b90915550506009546040805183815260208101929092527f307076957a8ce6e01b7d381f303646d1011fb16a9842dfa0859a9eddfd312e4291016104fa565b60606004805461056f90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461059b90611757565b80156105e85780601f106105bd576101008083540402835291602001916105e8565b820191906000526020600020905b8154815290600101906020018083116105cb57829003601f168201915b5050505050905090565b600033610600818585610c56565b60019150505b92915050565b60008060006106196107a3565b90925090508061062983866117aa565b61063391906117c1565b949350505050565b600061064860065461060c565b905090565b60003361065b858285610e0a565b610666858585610ee1565b506001949350505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060090829086906106b8908790611731565b610c56565b336000908152600a602052604090205460ff1661073b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4578706f737572653a2063616c6c6572206973206e6f742061207661756c740060448201526064015b60405180910390fd5b61074582826111a4565b80600960008282546107579190611731565b90915550505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120546106069061060c565b610797610bd5565b6107a160006112ca565b565b60095460065460008290036107b757600191505b806000036107c25750805b9091565b60606005805461056f90611757565b6107df338361133f565b81600960008282546107f19190611744565b9091555050600b5473ffffffffffffffffffffffffffffffffffffffff16156108a157600b546040517f4d4c23a80000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff838116602483015290911690634d4c23a890604401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050505b6008546040805173ffffffffffffffffffffffffffffffffffffffff928316815233602082015291831690820152606081018390527fee02732fab40ece8284c756220846dff4b8d32058b86b35b4f0459bf172fcef0906080016104fa565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610732565b6106668286868403610c56565b6109d9610bd5565b73ffffffffffffffffffffffffffffffffffffffff82166000818152600a602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f73d5b2f10126b99916a4c71d591a354f52ed52ca3b0278eaf584e35220addb7791016104fa565b600033610600818585610ee1565b610a76610bd5565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f111c6aeb2006d748bdae2ddf082866e6ce7eb3d48ef324b5d9547570f5694e4f9060200160405180910390a150565b6000806000610afc6107a3565b90925090508161062982866117aa565b6107a1610b1833610760565b336107d5565b610b26610bd5565b73ffffffffffffffffffffffffffffffffffffffff8116610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610732565b610bd2816112ca565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610732565b73ffffffffffffffffffffffffffffffffffffffff8316610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610edb5781811015610ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610732565b610edb8484848403610c56565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff8216611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120549061105783610aef565b9050808210156110e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260076020526040808220805485900390559186168152908120805483929061112f908490611731565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161119591815260200190565b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610732565b600061122c82610aef565b905080600660008282546112409190611731565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120805483929061127a908490611731565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610dfd565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff82166113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120549061141283610aef565b9050808210156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610732565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208284039055600680548392906114e0908490611744565b909155505060405183815260009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b60006020828403121561154b57600080fd5b5035919050565b600060208083528351808285015260005b8181101561157f57858101830151858201604001528201611563565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bd257600080fd5b600080604083850312156115f357600080fd5b82356115fe816115be565b946020939093013593505050565b60008060006060848603121561162157600080fd5b833561162c816115be565b9250602084013561163c816115be565b929592945050506040919091013590565b60006020828403121561165f57600080fd5b813561166a816115be565b9392505050565b6000806040838503121561168457600080fd5b823591506020830135611696816115be565b809150509250929050565b600080604083850312156116b457600080fd5b82356116bf816115be565b91506020830135801515811461169657600080fd5b600080604083850312156116e757600080fd5b82356116f2816115be565b91506020830135611696816115be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561060657610606611702565b8181038181111561060657610606611702565b600181811c9082168061176b57607f821691505b6020821081036117a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808202811582820484141761060657610606611702565b6000826117f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122023d50523323278d5d51dbe41fe9be37b11c00f4d77ff9097ffba9f3a850c9a6a64736f6c6343000813003360a060405234801561001057600080fd5b50604051610a5d380380610a5d83398101604081905261002f91610099565b61003833610049565b6001600160a01b03166080526100c9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ab57600080fd5b81516001600160a01b03811681146100c257600080fd5b9392505050565b6080516109726100eb600039600081816101d8015261052a01526109726000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063de5e63301161005b578063de5e6330146101ca578063ebf7a41e146101d3578063f2fde38b146101fa57600080fd5b80638da5cb5b14610158578063ce7c2ac214610197578063ddeae033146101b757600080fd5b8063715018a6116100b2578063715018a61461012a57806386c011db1461013257806387983d131461014557600080fd5b806326603b95146100d95780633a98ef391461010c57806363ec512d14610115575b600080fd5b6100f96100e736600461082a565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6100f960025481565b61012861012336600461084c565b61020d565b005b61012861028a565b610128610140366004610865565b61029e565b610128610153366004610865565b61039d565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b6100f96101a536600461082a565b60016020526000908152604090205481565b6101286101c536600461082a565b610494565b6100f960045481565b6101727f000000000000000000000000000000000000000000000000000000000000000081565b61012861020836600461082a565b61064f565b61021561070b565b60025461022a670de0b6b3a7640000836108be565b61023491906108db565b600460008282546102459190610916565b90915550506004546040805183815260208101929092527f44c8e79be0ba50742684a585db3a9db56735a204cfa14b6d54fadc2b141ebd89910160405180910390a150565b61029261070b565b61029c600061078c565b565b6102a661070b565b6102af82610494565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906102e4908490610916565b9250508190555080600260008282546102fd9190610916565b909155505060045461030f90826108be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190610344908490610916565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527f50de8324aee226699209f9c49e31220e9e7e4f7a3d2d76060d913995cd11148e91015b60405180910390a15050565b6103a561070b565b6103ae82610494565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906103e3908490610929565b9250508190555080600260008282546103fc9190610929565b909155505060045461040e90826108be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190610443908490610929565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527f7f057847ef731c18392c410072b87537e1ebd5fc3ca97d90d44e23f10010e2919101610391565b60045473ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205490916104c8916108be565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812054919250906104fc9083610929565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526003602052604090208490559091507f0000000000000000000000000000000000000000000000000000000000000000166340c10f1984610562670de0b6b3a7640000856108db565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b505050507fc15f451120b13b6b40c6ad6203614ab3088308bef9150c0d6f46ea79bf46422483670de0b6b3a76400008361061b91906108db565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520160405180910390a1505050565b61065761070b565b73ffffffffffffffffffffffffffffffffffffffff81166106ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6107088161078c565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461029c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f6565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461082557600080fd5b919050565b60006020828403121561083c57600080fd5b61084582610801565b9392505050565b60006020828403121561085e57600080fd5b5035919050565b6000806040838503121561087857600080fd5b61088183610801565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108d5576108d561088f565b92915050565b600082610911577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156108d5576108d561088f565b818103818111156108d5576108d561088f56fea264697066735822122082ef6a9750978f29dd4b1407381b94710f57d0208bca6046e88541cf4adcf35664736f6c63430008130033a2646970667358221220cd3a82c19e50d87f498e952e6b804fe678f38a5e62a5e0bc46ad3b3bebba279f64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/OtcOffer.sol/OtcOffer.json b/apps/dapp/abi/contracts/core/OtcOffer.sol/OtcOffer.json new file mode 100644 index 000000000..906934b33 --- /dev/null +++ b/apps/dapp/abi/contracts/core/OtcOffer.sol/OtcOffer.json @@ -0,0 +1,465 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OtcOffer", + "sourceName": "contracts/core/OtcOffer.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_userSellToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_userBuyToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_fundsOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_offerPrice", + "type": "uint256" + }, + { + "internalType": "enum OtcOffer.OfferPricingToken", + "name": "_offerPricingToken", + "type": "uint8" + }, + { + "internalType": "uint128", + "name": "_minValidOfferPrice", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_maxValidOfferPrice", + "type": "uint128" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "inputs": [], + "name": "OfferPriceNotValid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fundsOwner", + "type": "address" + } + ], + "name": "FundsOwnerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint128", + "name": "minValidOfferPrice", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "maxValidOfferPrice", + "type": "uint128" + } + ], + "name": "OfferPriceRangeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_offerPrice", + "type": "uint256" + } + ], + "name": "OfferPriceSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "fundsOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "userSellTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "userBuyTokenAmount", + "type": "uint256" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "OFFER_PRICE_DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "fundsOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxValidOfferPrice", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minValidOfferPrice", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "offerPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "offerPricingToken", + "outputs": [ + { + "internalType": "enum OtcOffer.OfferPricingToken", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sellTokenAmount", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "buyTokenAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "scalar", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_fundsOwner", + "type": "address" + } + ], + "name": "setFundsOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_offerPrice", + "type": "uint256" + } + ], + "name": "setOfferPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "_minValidOfferPrice", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "_maxValidOfferPrice", + "type": "uint128" + } + ], + "name": "setOfferPriceRange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sellTokenAmount", + "type": "uint256" + } + ], + "name": "swap", + "outputs": [ + { + "internalType": "uint256", + "name": "buyTokenAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "userBuyToken", + "outputs": [ + { + "internalType": "contract IERC20Metadata", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "userBuyTokenAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "userSellToken", + "outputs": [ + { + "internalType": "contract IERC20Metadata", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6101006040523480156200001257600080fd5b50604051620019ae380380620019ae833981016040819052620000359162000366565b6000805460ff191690556200004a33620002d8565b6001600160a01b0387811660805286811660a052600180546001600160a01b031916918716919091178155600285905583908111156200008e576200008e620003f7565b60c0816001811115620000a557620000a5620003f7565b9052506001600160801b03818116600160801b029083161760035560008060c0516001811115620000da57620000da620003f7565b14620001cd576080516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014791906200040d565b60a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000188573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ae91906200040d565b620001bb9060126200044f565b620001c7919062000471565b620002b4565b60a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023491906200040d565b6080516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029b91906200040d565b620002a89060126200044f565b620002b4919062000471565b60ff169050620002c681600a6200058a565b60e05250620005989650505050505050565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b80516001600160a01b03811681146200034957600080fd5b919050565b80516001600160801b03811681146200034957600080fd5b600080600080600080600060e0888a0312156200038257600080fd5b6200038d8862000331565b96506200039d6020890162000331565b9550620003ad6040890162000331565b945060608801519350608088015160028110620003c957600080fd5b9250620003d960a089016200034e565b9150620003e960c089016200034e565b905092959891949750929550565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200042057600080fd5b815160ff811681146200043257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156200046b576200046b62000439565b92915050565b60ff82811682821603908111156200046b576200046b62000439565b600181815b80851115620004ce578160001904821115620004b257620004b262000439565b80851615620004c057918102915b93841c939080029062000492565b509250929050565b600082620004e7575060016200046b565b81620004f6575060006200046b565b81600181146200050f57600281146200051a576200053a565b60019150506200046b565b60ff8411156200052e576200052e62000439565b50506001821b6200046b565b5060208310610133831016604e8410600b84101617156200055f575081810a6200046b565b6200056b83836200048d565b806000190482111562000582576200058262000439565b029392505050565b6000620004328383620004d6565b60805160a05160c05160e0516113ab62000603600039600081816103b80152818161097001526109a601526000818161035e0152610933015260008181610282015281816105e8015281816107ee01526108aa01526000818161018101526105a601526113ab6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063963d3715116100d8578063b873d8061161008c578063ed1bd76c11610066578063ed1bd76c1461038d578063f2fde38b146103a0578063f45e65d8146103b357600080fd5b8063b873d80614610337578063db590eac14610351578063eb99da4a1461035957600080fd5b8063aa13372e116100bd578063aa13372e146102b7578063ac12ea8e14610308578063aec1c3271461032457600080fd5b8063963d37151461027d578063972973e7146102a457600080fd5b80635c975abb1161012f5780638456cb59116101145780638456cb591461023f5780638da5cb5b1461024757806394b918de1461026a57600080fd5b80635c975abb14610221578063715018a61461023757600080fd5b80633f4ba83a116101605780633f4ba83a146101e45780633f7af9ea146101ee57806346ee3c591461020157600080fd5b80631980872e1461017c5780633bf19e29146101cd575b600080fd5b6101a37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101d660025481565b6040519081526020016101c4565b6101ec6103da565b005b6101ec6101fc366004611137565b6103ec565b6001546101a39073ffffffffffffffffffffffffffffffffffffffff1681565b60005460ff1660405190151581526020016101c4565b6101ec6104c1565b6101ec6104d3565b600054610100900473ffffffffffffffffffffffffffffffffffffffff166101a3565b6101d661027836600461116a565b6104e3565b6101a37f000000000000000000000000000000000000000000000000000000000000000081565b6101ec6102b236600461116a565b610616565b6003546102e79070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c4565b6003546102e7906fffffffffffffffffffffffffffffffff1681565b6101ec610332366004611183565b6106d9565b61033f601281565b60405160ff90911681526020016101c4565b6101d661079d565b6103807f000000000000000000000000000000000000000000000000000000000000000081565b6040516101c491906111ef565b6101d661039b36600461116a565b61092e565b6101ec6103ae366004611183565b6109e3565b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6103e2610a9f565b6103ea610b26565b565b6103f4610a9f565b806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161115610452576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff82811670010000000000000000000000000000000091831691820281176003556040805191825260208201929092527f3cb7aa6ad329dbbae3ba64a123b11b3d714240d6b16f448bb41e815b7618b9ef910160405180910390a15050565b6104c9610a9f565b6103ea6000610ba3565b6104db610a9f565b6103ea610c20565b60006104ed610c7b565b81600003610527576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105308261092e565b600154604080518581526020810184905292935073ffffffffffffffffffffffffffffffffffffffff90911691829133917ffa2dda1cc1b86e41239702756b13effbc1a092b5c57e3ad320fbe4f3b13fe235910160405180910390a36105ce73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016338386610ce8565b61061073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016823385610ce8565b50919050565b61061e610a9f565b6003546fffffffffffffffffffffffffffffffff16811080610667575060035470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681115b1561069e576040517f9aa5f25100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f58af8a859607b837cd10bfb8098d6da3c00d714fd6a1a9b7c764533d1fcb17df9060200160405180910390a150565b6106e1610a9f565b73ffffffffffffffffffffffffffffffffffffffff811661072e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffc96af5cc8fe5d8e2880342c1ad3fbe1731bccf067275cd1fced2f4f8f13512d90600090a250565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201819052600092909183917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108599190611230565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e90604401602060405180830381865afa1580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190611230565b90508082106109245780610926565b815b935050505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001811115610963576109636111c0565b146109a4576002546109957f000000000000000000000000000000000000000000000000000000000000000084611249565b61099f9190611287565b6109dd565b7f0000000000000000000000000000000000000000000000000000000000000000600254836109d39190611249565b6109dd9190611287565b92915050565b6109eb610a9f565b73ffffffffffffffffffffffffffffffffffffffff8116610a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610a9c81610ba3565b50565b60005473ffffffffffffffffffffffffffffffffffffffff6101009091041633146103ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a8a565b610b2e610d83565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b610c28610c7b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b793390565b60005460ff16156103ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a8a565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610d7d908590610def565b50505050565b60005460ff166103ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610a8a565b6000610e51826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610f039092919063ffffffff16565b9050805160001480610e72575080806020019051810190610e7291906112c2565b610efe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a8a565b505050565b6060610f128484600085610f1a565b949350505050565b606082471015610fac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610a8a565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610fd59190611308565b60006040518083038185875af1925050503d8060008114611012576040519150601f19603f3d011682016040523d82523d6000602084013e611017565b606091505b509150915061102887838387611033565b979650505050505050565b606083156110c95782516000036110c25773ffffffffffffffffffffffffffffffffffffffff85163b6110c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a8a565b5081610f12565b610f1283838151156110de5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a9190611324565b80356fffffffffffffffffffffffffffffffff8116811461113257600080fd5b919050565b6000806040838503121561114a57600080fd5b61115383611112565b915061116160208401611112565b90509250929050565b60006020828403121561117c57600080fd5b5035919050565b60006020828403121561119557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146111b957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016002831061122a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561124257600080fd5b5051919050565b80820281158282048414176109dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826112bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156112d457600080fd5b815180151581146111b957600080fd5b60005b838110156112ff5781810151838201526020016112e7565b50506000910152565b6000825161131a8184602087016112e4565b9190910192915050565b60208152600082518060208401526113438160408501602087016112e4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122082a3f6e1aa357972326934f293756dabd61fb0b11f345290f3604ea492ba99f764736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c8063963d3715116100d8578063b873d8061161008c578063ed1bd76c11610066578063ed1bd76c1461038d578063f2fde38b146103a0578063f45e65d8146103b357600080fd5b8063b873d80614610337578063db590eac14610351578063eb99da4a1461035957600080fd5b8063aa13372e116100bd578063aa13372e146102b7578063ac12ea8e14610308578063aec1c3271461032457600080fd5b8063963d37151461027d578063972973e7146102a457600080fd5b80635c975abb1161012f5780638456cb59116101145780638456cb591461023f5780638da5cb5b1461024757806394b918de1461026a57600080fd5b80635c975abb14610221578063715018a61461023757600080fd5b80633f4ba83a116101605780633f4ba83a146101e45780633f7af9ea146101ee57806346ee3c591461020157600080fd5b80631980872e1461017c5780633bf19e29146101cd575b600080fd5b6101a37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101d660025481565b6040519081526020016101c4565b6101ec6103da565b005b6101ec6101fc366004611137565b6103ec565b6001546101a39073ffffffffffffffffffffffffffffffffffffffff1681565b60005460ff1660405190151581526020016101c4565b6101ec6104c1565b6101ec6104d3565b600054610100900473ffffffffffffffffffffffffffffffffffffffff166101a3565b6101d661027836600461116a565b6104e3565b6101a37f000000000000000000000000000000000000000000000000000000000000000081565b6101ec6102b236600461116a565b610616565b6003546102e79070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c4565b6003546102e7906fffffffffffffffffffffffffffffffff1681565b6101ec610332366004611183565b6106d9565b61033f601281565b60405160ff90911681526020016101c4565b6101d661079d565b6103807f000000000000000000000000000000000000000000000000000000000000000081565b6040516101c491906111ef565b6101d661039b36600461116a565b61092e565b6101ec6103ae366004611183565b6109e3565b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6103e2610a9f565b6103ea610b26565b565b6103f4610a9f565b806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161115610452576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff82811670010000000000000000000000000000000091831691820281176003556040805191825260208201929092527f3cb7aa6ad329dbbae3ba64a123b11b3d714240d6b16f448bb41e815b7618b9ef910160405180910390a15050565b6104c9610a9f565b6103ea6000610ba3565b6104db610a9f565b6103ea610c20565b60006104ed610c7b565b81600003610527576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105308261092e565b600154604080518581526020810184905292935073ffffffffffffffffffffffffffffffffffffffff90911691829133917ffa2dda1cc1b86e41239702756b13effbc1a092b5c57e3ad320fbe4f3b13fe235910160405180910390a36105ce73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016338386610ce8565b61061073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016823385610ce8565b50919050565b61061e610a9f565b6003546fffffffffffffffffffffffffffffffff16811080610667575060035470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681115b1561069e576040517f9aa5f25100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f58af8a859607b837cd10bfb8098d6da3c00d714fd6a1a9b7c764533d1fcb17df9060200160405180910390a150565b6106e1610a9f565b73ffffffffffffffffffffffffffffffffffffffff811661072e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffc96af5cc8fe5d8e2880342c1ad3fbe1731bccf067275cd1fced2f4f8f13512d90600090a250565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201819052600092909183917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108599190611230565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e90604401602060405180830381865afa1580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190611230565b90508082106109245780610926565b815b935050505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001811115610963576109636111c0565b146109a4576002546109957f000000000000000000000000000000000000000000000000000000000000000084611249565b61099f9190611287565b6109dd565b7f0000000000000000000000000000000000000000000000000000000000000000600254836109d39190611249565b6109dd9190611287565b92915050565b6109eb610a9f565b73ffffffffffffffffffffffffffffffffffffffff8116610a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610a9c81610ba3565b50565b60005473ffffffffffffffffffffffffffffffffffffffff6101009091041633146103ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a8a565b610b2e610d83565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b610c28610c7b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b793390565b60005460ff16156103ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a8a565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610d7d908590610def565b50505050565b60005460ff166103ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610a8a565b6000610e51826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610f039092919063ffffffff16565b9050805160001480610e72575080806020019051810190610e7291906112c2565b610efe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a8a565b505050565b6060610f128484600085610f1a565b949350505050565b606082471015610fac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610a8a565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610fd59190611308565b60006040518083038185875af1925050503d8060008114611012576040519150601f19603f3d011682016040523d82523d6000602084013e611017565b606091505b509150915061102887838387611033565b979650505050505050565b606083156110c95782516000036110c25773ffffffffffffffffffffffffffffffffffffffff85163b6110c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a8a565b5081610f12565b610f1283838151156110de5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a9190611324565b80356fffffffffffffffffffffffffffffffff8116811461113257600080fd5b919050565b6000806040838503121561114a57600080fd5b61115383611112565b915061116160208401611112565b90509250929050565b60006020828403121561117c57600080fd5b5035919050565b60006020828403121561119557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146111b957600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016002831061122a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561124257600080fd5b5051919050565b80820281158282048414176109dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826112bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156112d457600080fd5b815180151581146111b957600080fd5b60005b838110156112ff5781810151838201526020016112e7565b50506000910152565b6000825161131a8184602087016112e4565b9190910192915050565b60208152600082518060208401526113438160408501602087016112e4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122082a3f6e1aa357972326934f293756dabd61fb0b11f345290f3604ea492ba99f764736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/RebasingERC20.sol/RebasingERC20.json b/apps/dapp/abi/contracts/core/RebasingERC20.sol/RebasingERC20.json new file mode 100644 index 000000000..26ddbc2a3 --- /dev/null +++ b/apps/dapp/abi/contracts/core/RebasingERC20.sol/RebasingERC20.json @@ -0,0 +1,369 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RebasingERC20", + "sourceName": "contracts/core/RebasingERC20.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "amountPerShare", + "outputs": [ + { + "internalType": "uint256", + "name": "p", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "q", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "shareBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + } + ], + "name": "toSharesAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "sharesAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sharesAmount", + "type": "uint256" + } + ], + "name": "toTokenAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/TempleERC20Token.sol/TempleERC20Token.json b/apps/dapp/abi/contracts/core/TempleERC20Token.sol/TempleERC20Token.json new file mode 100644 index 000000000..344ad98c9 --- /dev/null +++ b/apps/dapp/abi/contracts/core/TempleERC20Token.sol/TempleERC20Token.json @@ -0,0 +1,630 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleERC20Token", + "sourceName": "contracts/core/TempleERC20Token.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "CAN_MINT", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600681526020016554656d706c6560d01b8152506040518060400160405280600681526020016554454d504c4560d01b815250816003908162000061919062000261565b50600462000070828262000261565b5050506200008d62000087620000b260201b60201c565b620000b6565b620000ac6000620000a66005546001600160a01b031690565b62000108565b6200032d565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62000114828262000118565b5050565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff16620001145760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001783390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001e757607f821691505b6020821081036200020857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025c57600081815260208120601f850160051c81016020861015620002375750805b601f850160051c820191505b81811015620002585782815560010162000243565b5050505b505050565b81516001600160401b038111156200027d576200027d620001bc565b62000295816200028e8454620001d2565b846200020e565b602080601f831160018114620002cd5760008415620002b45750858301515b600019600386901b1c1916600185901b17855562000258565b600085815260208120601f198616915b82811015620002fe57888601518255948401946001909101908401620002dd565b50858210156200031d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611b56806200033d6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063a217fddf11610097578063cda472b011610071578063cda472b0146103e1578063d547741f14610408578063dd62ed3e1461041b578063f2fde38b1461046157600080fd5b8063a217fddf146103b3578063a457c2d7146103bb578063a9059cbb146103ce57600080fd5b80638da5cb5b116100d35780638da5cb5b1461032a57806391d148541461035257806395d89b4114610398578063983b2d56146103a057600080fd5b806370a08231146102d9578063715018a61461030f57806379cc67901461031757600080fd5b80632f2ff15d1161016657806336568abe1161014057806336568abe1461028d57806339509351146102a057806340c10f19146102b357806342966c68146102c657600080fd5b80632f2ff15d146102565780633092afd51461026b578063313ce5671461027e57600080fd5b806318160ddd1161019757806318160ddd1461020e57806323b872dd14610220578063248a9ca31461023357600080fd5b806301ffc9a7146101be57806306fdde03146101e6578063095ea7b3146101fb575b600080fd5b6101d16101cc366004611790565b610474565b60405190151581526020015b60405180910390f35b6101ee61050d565b6040516101dd91906117f6565b6101d1610209366004611870565b61059f565b6002545b6040519081526020016101dd565b6101d161022e36600461189a565b6105b7565b6102126102413660046118d6565b60009081526006602052604090206001015490565b6102696102643660046118ef565b6105db565b005b61026961027936600461191b565b610605565b604051601281526020016101dd565b61026961029b3660046118ef565b61063a565b6101d16102ae366004611870565b6106f2565b6102696102c1366004611870565b61073e565b6102696102d43660046118d6565b6107e0565b6102126102e736600461191b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102696107ea565b610269610325366004611870565b6107fe565b60055460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b6101d16103603660046118ef565b600091825260066020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101ee610813565b6102696103ae36600461191b565b610822565b610212600081565b6101d16103c9366004611870565b610854565b6101d16103dc366004611870565b610925565b6102127f5fae0c7bd414a04df9e8c5c6306f0962d6b05973710bc170aa415577df8e2c5c81565b6102696104163660046118ef565b610933565b610212610429366004611936565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61026961046f36600461191b565b610958565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061050757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606003805461051c90611960565b80601f016020809104026020016040519081016040528092919081815260200182805461054890611960565b80156105955780601f1061056a57610100808354040283529160200191610595565b820191906000526020600020905b81548152906001019060200180831161057857829003601f168201915b5050505050905090565b6000336105ad818585610a0c565b5060019392505050565b6000336105c5858285610bbf565b6105d0858585610c96565b506001949350505050565b6000828152600660205260409020600101546105f681610f05565b6106008383610f0f565b505050565b61060d611003565b6106377f5fae0c7bd414a04df9e8c5c6306f0962d6b05973710bc170aa415577df8e2c5c82610933565b50565b73ffffffffffffffffffffffffffffffffffffffff811633146106e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106ee8282611084565b5050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906105ad90829086906107399087906119e2565b610a0c565b3360009081527fb8c83a0386f319ac8cd578cf0a76b125cdca8d6be9630aabf5391ef1d01d1b7e602052604090205460ff166107d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f43616c6c65722063616e6e6f74206d696e74000000000000000000000000000060448201526064016106db565b6106ee828261113f565b6106373382611232565b6107f2611003565b6107fc60006113f6565b565b610809823383610bbf565b6106ee8282611232565b60606004805461051c90611960565b61082a611003565b6106377f5fae0c7bd414a04df9e8c5c6306f0962d6b05973710bc170aa415577df8e2c5c826105db565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106db565b6105d08286868403610a0c565b6000336105ad818585610c96565b60008281526006602052604090206001015461094e81610f05565b6106008383611084565b610960611003565b73ffffffffffffffffffffffffffffffffffffffff8116610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106db565b610637816113f6565b73ffffffffffffffffffffffffffffffffffffffff8316610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff8216610b51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c905781811015610c83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106db565b610c908484848403610a0c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c90565b610637813361146d565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106ee57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fa53390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106db565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106ee57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b73ffffffffffffffffffffffffffffffffffffffff82166111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106db565b80600260008282546111ce91906119e2565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166112d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561138b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106ee576114ad81611527565b6114b8836020611546565b6040516020016114c99291906119f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526106db916004016117f6565b606061050773ffffffffffffffffffffffffffffffffffffffff831660145b60606000611555836002611a76565b6115609060026119e2565b67ffffffffffffffff81111561157857611578611a8d565b6040519080825280601f01601f1916602001820160405280156115a2576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115d9576115d9611abc565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061163c5761163c611abc565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611678846002611a76565b6116839060016119e2565b90505b6001811115611720577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106116c4576116c4611abc565b1a60f81b8282815181106116da576116da611abc565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361171981611aeb565b9050611686565b508315611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106db565b9392505050565b6000602082840312156117a257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461178957600080fd5b60005b838110156117ed5781810151838201526020016117d5565b50506000910152565b60208152600082518060208401526118158160408501602087016117d2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461186b57600080fd5b919050565b6000806040838503121561188357600080fd5b61188c83611847565b946020939093013593505050565b6000806000606084860312156118af57600080fd5b6118b884611847565b92506118c660208501611847565b9150604084013590509250925092565b6000602082840312156118e857600080fd5b5035919050565b6000806040838503121561190257600080fd5b8235915061191260208401611847565b90509250929050565b60006020828403121561192d57600080fd5b61178982611847565b6000806040838503121561194957600080fd5b61195283611847565b915061191260208401611847565b600181811c9082168061197457607f821691505b6020821081036119ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610507576105076119b3565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611a2d8160178501602088016117d2565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611a6a8160288401602088016117d2565b01602801949350505050565b8082028115828204841417610507576105076119b3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081611afa57611afa6119b3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212201e8a1df16dca8ac8148400f96dcab1771b20919edb28d3325344bc4efb42e4c764736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063a217fddf11610097578063cda472b011610071578063cda472b0146103e1578063d547741f14610408578063dd62ed3e1461041b578063f2fde38b1461046157600080fd5b8063a217fddf146103b3578063a457c2d7146103bb578063a9059cbb146103ce57600080fd5b80638da5cb5b116100d35780638da5cb5b1461032a57806391d148541461035257806395d89b4114610398578063983b2d56146103a057600080fd5b806370a08231146102d9578063715018a61461030f57806379cc67901461031757600080fd5b80632f2ff15d1161016657806336568abe1161014057806336568abe1461028d57806339509351146102a057806340c10f19146102b357806342966c68146102c657600080fd5b80632f2ff15d146102565780633092afd51461026b578063313ce5671461027e57600080fd5b806318160ddd1161019757806318160ddd1461020e57806323b872dd14610220578063248a9ca31461023357600080fd5b806301ffc9a7146101be57806306fdde03146101e6578063095ea7b3146101fb575b600080fd5b6101d16101cc366004611790565b610474565b60405190151581526020015b60405180910390f35b6101ee61050d565b6040516101dd91906117f6565b6101d1610209366004611870565b61059f565b6002545b6040519081526020016101dd565b6101d161022e36600461189a565b6105b7565b6102126102413660046118d6565b60009081526006602052604090206001015490565b6102696102643660046118ef565b6105db565b005b61026961027936600461191b565b610605565b604051601281526020016101dd565b61026961029b3660046118ef565b61063a565b6101d16102ae366004611870565b6106f2565b6102696102c1366004611870565b61073e565b6102696102d43660046118d6565b6107e0565b6102126102e736600461191b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102696107ea565b610269610325366004611870565b6107fe565b60055460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b6101d16103603660046118ef565b600091825260066020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101ee610813565b6102696103ae36600461191b565b610822565b610212600081565b6101d16103c9366004611870565b610854565b6101d16103dc366004611870565b610925565b6102127f5fae0c7bd414a04df9e8c5c6306f0962d6b05973710bc170aa415577df8e2c5c81565b6102696104163660046118ef565b610933565b610212610429366004611936565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61026961046f36600461191b565b610958565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061050757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606003805461051c90611960565b80601f016020809104026020016040519081016040528092919081815260200182805461054890611960565b80156105955780601f1061056a57610100808354040283529160200191610595565b820191906000526020600020905b81548152906001019060200180831161057857829003601f168201915b5050505050905090565b6000336105ad818585610a0c565b5060019392505050565b6000336105c5858285610bbf565b6105d0858585610c96565b506001949350505050565b6000828152600660205260409020600101546105f681610f05565b6106008383610f0f565b505050565b61060d611003565b6106377f5fae0c7bd414a04df9e8c5c6306f0962d6b05973710bc170aa415577df8e2c5c82610933565b50565b73ffffffffffffffffffffffffffffffffffffffff811633146106e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106ee8282611084565b5050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906105ad90829086906107399087906119e2565b610a0c565b3360009081527fb8c83a0386f319ac8cd578cf0a76b125cdca8d6be9630aabf5391ef1d01d1b7e602052604090205460ff166107d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f43616c6c65722063616e6e6f74206d696e74000000000000000000000000000060448201526064016106db565b6106ee828261113f565b6106373382611232565b6107f2611003565b6107fc60006113f6565b565b610809823383610bbf565b6106ee8282611232565b60606004805461051c90611960565b61082a611003565b6106377f5fae0c7bd414a04df9e8c5c6306f0962d6b05973710bc170aa415577df8e2c5c826105db565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106db565b6105d08286868403610a0c565b6000336105ad818585610c96565b60008281526006602052604090206001015461094e81610f05565b6106008383611084565b610960611003565b73ffffffffffffffffffffffffffffffffffffffff8116610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106db565b610637816113f6565b73ffffffffffffffffffffffffffffffffffffffff8316610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff8216610b51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c905781811015610c83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106db565b610c908484848403610a0c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c90565b610637813361146d565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106ee57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610fa53390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106db565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106ee57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b73ffffffffffffffffffffffffffffffffffffffff82166111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106db565b80600260008282546111ce91906119e2565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166112d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561138b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106db565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106ee576114ad81611527565b6114b8836020611546565b6040516020016114c99291906119f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526106db916004016117f6565b606061050773ffffffffffffffffffffffffffffffffffffffff831660145b60606000611555836002611a76565b6115609060026119e2565b67ffffffffffffffff81111561157857611578611a8d565b6040519080825280601f01601f1916602001820160405280156115a2576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115d9576115d9611abc565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061163c5761163c611abc565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611678846002611a76565b6116839060016119e2565b90505b6001811115611720577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106116c4576116c4611abc565b1a60f81b8282815181106116da576116da611abc565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361171981611aeb565b9050611686565b508315611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106db565b9392505050565b6000602082840312156117a257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461178957600080fd5b60005b838110156117ed5781810151838201526020016117d5565b50506000910152565b60208152600082518060208401526118158160408501602087016117d2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461186b57600080fd5b919050565b6000806040838503121561188357600080fd5b61188c83611847565b946020939093013593505050565b6000806000606084860312156118af57600080fd5b6118b884611847565b92506118c660208501611847565b9150604084013590509250925092565b6000602082840312156118e857600080fd5b5035919050565b6000806040838503121561190257600080fd5b8235915061191260208401611847565b90509250929050565b60006020828403121561192d57600080fd5b61178982611847565b6000806040838503121561194957600080fd5b61195283611847565b915061191260208401611847565b600181811c9082168061197457607f821691505b6020821081036119ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610507576105076119b3565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611a2d8160178501602088016117d2565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611a6a8160288401602088016117d2565b01602801949350505050565b8082028115828204841417610507576105076119b3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081611afa57611afa6119b3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212201e8a1df16dca8ac8148400f96dcab1771b20919edb28d3325344bc4efb42e4c764736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/TreasuryFarmingRevenue.sol/TreasuryFarmingRevenue.json b/apps/dapp/abi/contracts/core/TreasuryFarmingRevenue.sol/TreasuryFarmingRevenue.json new file mode 100644 index 000000000..13ce59e92 --- /dev/null +++ b/apps/dapp/abi/contracts/core/TreasuryFarmingRevenue.sol/TreasuryFarmingRevenue.json @@ -0,0 +1,289 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TreasuryFarmingRevenue", + "sourceName": "contracts/core/TreasuryFarmingRevenue.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract Exposure", + "name": "_exposure", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "DecreaseShares", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "IncreaseShares", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "revenueClaimed", + "type": "uint256" + } + ], + "name": "RevenueClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "revenueEarned", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lifetimeAccRevenueScaledByShare", + "type": "uint256" + } + ], + "name": "RevenueEarned", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "revenueEarned", + "type": "uint256" + } + ], + "name": "addRevenue", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "claimFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "claimedByScaled", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "decreaseShares", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "exposure", + "outputs": [ + { + "internalType": "contract Exposure", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "increaseShares", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "lifetimeAccRevenueScaledByShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "shares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b50604051610a5d380380610a5d83398101604081905261002f91610099565b61003833610049565b6001600160a01b03166080526100c9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ab57600080fd5b81516001600160a01b03811681146100c257600080fd5b9392505050565b6080516109726100eb600039600081816101d8015261052a01526109726000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063de5e63301161005b578063de5e6330146101ca578063ebf7a41e146101d3578063f2fde38b146101fa57600080fd5b80638da5cb5b14610158578063ce7c2ac214610197578063ddeae033146101b757600080fd5b8063715018a6116100b2578063715018a61461012a57806386c011db1461013257806387983d131461014557600080fd5b806326603b95146100d95780633a98ef391461010c57806363ec512d14610115575b600080fd5b6100f96100e736600461082a565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6100f960025481565b61012861012336600461084c565b61020d565b005b61012861028a565b610128610140366004610865565b61029e565b610128610153366004610865565b61039d565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b6100f96101a536600461082a565b60016020526000908152604090205481565b6101286101c536600461082a565b610494565b6100f960045481565b6101727f000000000000000000000000000000000000000000000000000000000000000081565b61012861020836600461082a565b61064f565b61021561070b565b60025461022a670de0b6b3a7640000836108be565b61023491906108db565b600460008282546102459190610916565b90915550506004546040805183815260208101929092527f44c8e79be0ba50742684a585db3a9db56735a204cfa14b6d54fadc2b141ebd89910160405180910390a150565b61029261070b565b61029c600061078c565b565b6102a661070b565b6102af82610494565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906102e4908490610916565b9250508190555080600260008282546102fd9190610916565b909155505060045461030f90826108be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190610344908490610916565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527f50de8324aee226699209f9c49e31220e9e7e4f7a3d2d76060d913995cd11148e91015b60405180910390a15050565b6103a561070b565b6103ae82610494565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906103e3908490610929565b9250508190555080600260008282546103fc9190610929565b909155505060045461040e90826108be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190610443908490610929565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527f7f057847ef731c18392c410072b87537e1ebd5fc3ca97d90d44e23f10010e2919101610391565b60045473ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205490916104c8916108be565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812054919250906104fc9083610929565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526003602052604090208490559091507f0000000000000000000000000000000000000000000000000000000000000000166340c10f1984610562670de0b6b3a7640000856108db565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b505050507fc15f451120b13b6b40c6ad6203614ab3088308bef9150c0d6f46ea79bf46422483670de0b6b3a76400008361061b91906108db565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520160405180910390a1505050565b61065761070b565b73ffffffffffffffffffffffffffffffffffffffff81166106ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6107088161078c565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461029c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f6565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461082557600080fd5b919050565b60006020828403121561083c57600080fd5b61084582610801565b9392505050565b60006020828403121561085e57600080fd5b5035919050565b6000806040838503121561087857600080fd5b61088183610801565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108d5576108d561088f565b92915050565b600082610911577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156108d5576108d561088f565b818103818111156108d5576108d561088f56fea264697066735822122082ef6a9750978f29dd4b1407381b94710f57d0208bca6046e88541cf4adcf35664736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063de5e63301161005b578063de5e6330146101ca578063ebf7a41e146101d3578063f2fde38b146101fa57600080fd5b80638da5cb5b14610158578063ce7c2ac214610197578063ddeae033146101b757600080fd5b8063715018a6116100b2578063715018a61461012a57806386c011db1461013257806387983d131461014557600080fd5b806326603b95146100d95780633a98ef391461010c57806363ec512d14610115575b600080fd5b6100f96100e736600461082a565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6100f960025481565b61012861012336600461084c565b61020d565b005b61012861028a565b610128610140366004610865565b61029e565b610128610153366004610865565b61039d565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b6100f96101a536600461082a565b60016020526000908152604090205481565b6101286101c536600461082a565b610494565b6100f960045481565b6101727f000000000000000000000000000000000000000000000000000000000000000081565b61012861020836600461082a565b61064f565b61021561070b565b60025461022a670de0b6b3a7640000836108be565b61023491906108db565b600460008282546102459190610916565b90915550506004546040805183815260208101929092527f44c8e79be0ba50742684a585db3a9db56735a204cfa14b6d54fadc2b141ebd89910160405180910390a150565b61029261070b565b61029c600061078c565b565b6102a661070b565b6102af82610494565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906102e4908490610916565b9250508190555080600260008282546102fd9190610916565b909155505060045461030f90826108be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190610344908490610916565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527f50de8324aee226699209f9c49e31220e9e7e4f7a3d2d76060d913995cd11148e91015b60405180910390a15050565b6103a561070b565b6103ae82610494565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906103e3908490610929565b9250508190555080600260008282546103fc9190610929565b909155505060045461040e90826108be565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190610443908490610929565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527f7f057847ef731c18392c410072b87537e1ebd5fc3ca97d90d44e23f10010e2919101610391565b60045473ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205490916104c8916108be565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812054919250906104fc9083610929565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526003602052604090208490559091507f0000000000000000000000000000000000000000000000000000000000000000166340c10f1984610562670de0b6b3a7640000856108db565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b505050507fc15f451120b13b6b40c6ad6203614ab3088308bef9150c0d6f46ea79bf46422483670de0b6b3a76400008361061b91906108db565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520160405180910390a1505050565b61065761070b565b73ffffffffffffffffffffffffffffffffffffffff81166106ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6107088161078c565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461029c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f6565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461082557600080fd5b919050565b60006020828403121561083c57600080fd5b61084582610801565b9392505050565b60006020828403121561085e57600080fd5b5035919050565b6000806040838503121561087857600080fd5b61088183610801565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108d5576108d561088f565b92915050565b600082610911577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156108d5576108d561088f565b818103818111156108d5576108d561088f56fea264697066735822122082ef6a9750978f29dd4b1407381b94710f57d0208bca6046e88541cf4adcf35664736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/Vault.sol/Vault.json b/apps/dapp/abi/contracts/core/Vault.sol/Vault.json new file mode 100644 index 000000000..ff0e974a8 --- /dev/null +++ b/apps/dapp/abi/contracts/core/Vault.sol/Vault.json @@ -0,0 +1,936 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Vault", + "sourceName": "contracts/core/Vault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "contract IERC20", + "name": "_templeToken", + "type": "address" + }, + { + "internalType": "contract Exposure", + "name": "_templeExposureToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_vaultedTempleAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_periodDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_enterExitWindowDuration", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "p", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "q", + "type": "uint256" + } + ], + "internalType": "struct Rational", + "name": "_shareBoostFactory", + "type": "tuple" + }, + { + "internalType": "contract JoiningFee", + "name": "_joiningFee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_firstPeriodStartTimestamp", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidShortString", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "StringTooLong", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountStaked", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "EIP712DomainChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ENTER_EXIT_WINDOW_BUFFER", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WITHDRAW_FOR_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "amountPerShare", + "outputs": [ + { + "internalType": "uint256", + "name": "p", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "q", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "canEnter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "canExit", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "depositFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "enterExitWindowDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "firstPeriodStartTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inEnterExitWindow", + "outputs": [ + { + "internalType": "uint256", + "name": "cycleNumber", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "inWindow", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "joiningFee", + "outputs": [ + { + "internalType": "contract JoiningFee", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "periodDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Exposure[]", + "name": "exposures", + "type": "address[]" + } + ], + "name": "redeemExposures", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "shareBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "shareBoostFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "p", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "q", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetRevenueShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "templeExposureToken", + "outputs": [ + { + "internalType": "contract Exposure", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + } + ], + "name": "toSharesAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "sharesAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sharesAmount", + "type": "uint256" + } + ], + "name": "toTokenAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vaultedTempleAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "withdrawFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6102606040527f826f68b7f2dc717b262281384d6e69ddaba3805f6e37a8c771db2cc5d6ba4013610160523480156200003757600080fd5b5060405162003609380380620036098339810160408190526200005a91620003b3565b6040805180820190915260018152603160f81b60208201528a908a90829062000085826000620001a0565b6101205262000096816001620001a0565b61014052815160208084019190912060e052815190820120610100524660a0526200012460e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526200013833620001d9565b600662000146838262000529565b50600762000155828262000529565b5050506001600160a01b03978816610180529587166101a0529386166101c05261020092909252610220528051600b5560200151600c55909116610240526101e052506200064f9050565b6000602083511015620001c057620001b8836200022b565b9050620001d3565b81620001cd848262000529565b5060ff90505b92915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000262578260405163305a27a960e01b8152600401620002599190620005f5565b60405180910390fd5b80516200026f826200062a565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002aa57818101518382015260200162000290565b50506000910152565b600082601f830112620002c557600080fd5b81516001600160401b0380821115620002e257620002e262000277565b604051601f8301601f19908116603f011681019082821181831017156200030d576200030d62000277565b816040528381528660208588010111156200032757600080fd5b6200033a8460208301602089016200028d565b9695505050505050565b80516001600160a01b03811681146200035c57600080fd5b919050565b6000604082840312156200037457600080fd5b604080519081016001600160401b038111828210171562000399576200039962000277565b604052825181526020928301519281019290925250919050565b6000806000806000806000806000806101608b8d031215620003d457600080fd5b8a516001600160401b0380821115620003ec57600080fd5b620003fa8e838f01620002b3565b9b5060208d01519150808211156200041157600080fd5b50620004208d828e01620002b3565b9950506200043160408c0162000344565b97506200044160608c0162000344565b96506200045160808c0162000344565b955060a08b0151945060c08b01519350620004708c60e08d0162000361565b9250620004816101208c0162000344565b91506101408b015190509295989b9194979a5092959850565b600181811c90821680620004af57607f821691505b602082108103620004d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200052457600081815260208120601f850160051c81016020861015620004ff5750805b601f850160051c820191505b8181101562000520578281556001016200050b565b5050505b505050565b81516001600160401b0381111562000545576200054562000277565b6200055d816200055684546200049a565b84620004d6565b602080601f8311600181146200059557600084156200057c5750858301515b600019600386901b1c1916600185901b17855562000520565b600085815260208120601f198616915b82811015620005c657888601518255948401946001909101908401620005a5565b5085821015620005e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006168160408501602087016200028d565b601f01601f19169190910160400192915050565b80516020808301519190811015620004d05760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051612e97620007726000396000818161047d0152610aed0152600081816106d90152610f500152600081816105f601528181610abe01528181610ef50152610f9501526000818161042601528181610a9801528181610ec401528181610f190152610f7101526000818161069f0152610c6401526000818161052601528181610cbe0152818161106a0152818161120f01526115f20152600081816105cf0152610c420152600081816104ff015261076e0152600061115b0152600061113101526000611e9301526000611e6b01526000611dc601526000611df001526000611e1a0152612e976000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063715018a611610186578063a9059cbb116100e3578063b9844d8d11610097578063e1eda8f911610071578063e1eda8f91461069a578063f2fde38b146106c1578063fc1d3de2146106d457600080fd5b8063b9844d8d1461062b578063bca8371f1461064b578063dd62ed3e1461065457600080fd5b8063b1a9069c116100c8578063b1a9069c146105ca578063b470aade146105f1578063b6b55f251461061857600080fd5b8063a9059cbb146105a4578063b0ff1106146105b757600080fd5b806384b0196e1161013a57806395d89b411161011f57806395d89b4114610581578063981fc37214610589578063a457c2d71461059157600080fd5b806384b0196e146105485780638da5cb5b1461056357600080fd5b80637ecebe001161016b5780637ecebe00146104e757806381771329146104fa57806382dad8ac1461052157600080fd5b8063715018a6146104d75780637c5a227c146104df57600080fd5b80633644e5151161023f5780634473ad52116101f35780636b2f1417116101cd5780636b2f14171461045b5780636eeeaaa51461047857806370a08231146104c457600080fd5b80634473ad521461040157806363ceec65146104215780636823920a1461044857600080fd5b80633a98ef39116102245780633a98ef39146103e85780633d355f76146103f157806341ffb72e146103f957600080fd5b80633644e515146103cd57806339509351146103d557600080fd5b806323b872dd116102965780632f4f21e21161027b5780632f4f21e214610388578063313ce5671461039b578063341533d9146103aa57600080fd5b806323b872dd146103625780632e1a7d4d1461037557600080fd5b8063095ea7b3116102c7578063095ea7b314610316578063174e4ea61461033957806318160ddd1461035a57600080fd5b8063061e5844146102e357806306fdde03146102f8575b600080fd5b6102f66102f13660046128e0565b6106fb565b005b6103006108bd565b60405161030d91906129b0565b60405180910390f35b6103296103243660046129c3565b61094f565b604051901515815260200161030d565b61034c6103473660046129ef565b610969565b60405190815260200161030d565b61034c610998565b610329610370366004612a08565b6109aa565b6102f66103833660046129ef565b6109ce565b6102f66103963660046129c3565b6109dc565b6040516012815260200161030d565b600b54600c546103b8919082565b6040805192835260208301919091520161030d565b61034c610d8e565b6103296103e33660046129c3565b610d98565b61034c60085481565b610329610de4565b610329610df6565b61034c61040f366004612a49565b60096020526000908152604090205481565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b6102f6610456366004612aa5565b610e1b565b610463610ebf565b6040805192835290151560208301520161030d565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030d565b61034c6104d2366004612a49565b610fdf565b6102f661100e565b6103b8611022565b61034c6104f5366004612a49565b6110f8565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b610550611123565b60405161030d9796959493929190612b88565b60025473ffffffffffffffffffffffffffffffffffffffff1661049f565b6103006111c7565b61034c6111d6565b61032961059f3660046129c3565b6112a3565b6103296105b23660046129c3565b611374565b61034c6105c53660046129ef565b611382565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b6102f66106263660046129ef565b61139f565b61034c610639366004612a49565b600a6020526000908152604090205481565b61034c61012c81565b61034c610662366004612c47565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b6102f66106cf366004612a49565b6113a9565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b8342111561076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5661756c743a206578706972656420646561646c696e6500000000000000000060448201526064015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008733888861079a8c61145d565b60408051602081019790975273ffffffffffffffffffffffffffffffffffffffff95861690870152939092166060850152608084015260a083015260c082015260e001604051602081830303815290604052805190602001209050600061080082611492565b90506000610810828787876114da565b90508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5661756c743a20696e76616c6964207369676e617475726500000000000000006044820152606401610761565b6108b289338a611502565b505050505050505050565b6060600680546108cc90612c80565b80601f01602080910402602001604051908101604052809291908181526020018280546108f890612c80565b80156109455780601f1061091a57610100808354040283529160200191610945565b820191906000526020600020905b81548152906001019060200180831161092857829003601f168201915b5050505050905090565b60003361095d8185856116a3565b60019150505b92915050565b6000806000610976611022565b9092509050806109868386612cfc565b6109909190612d13565b949350505050565b60006109a5600854610969565b905090565b6000336109b8858285611857565b6109c385858561192e565b506001949350505050565b6109d9333383611502565b50565b6109e4610de4565b610a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5661756c743a2043616e6e6f74206a6f696e207661756c74207768656e206f7560448201527f7473696465206f6620656e7465722f657869742077696e646f770000000000006064820152608401610761565b6040517f07e7cc270000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000060248201523060448201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307e7cc2790606401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190612d4e565b90506000670de0b6b3a7640000610b848385612cfc565b610b8e9190612d13565b9050808311610c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5661756c743a2043616e6e6f74206a6f696e207768656e20666565206973206860448201527f6967686572207468616e20616d6f756e740000000000000000000000000000006064820152608401610761565b6000610c2b8285612d67565b90508315610d3057610c3d8582611bf1565b610c897f0000000000000000000000000000000000000000000000000000000000000000337f000000000000000000000000000000000000000000000000000000000000000087611d17565b6040517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906340c10f1990604401600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050505b6040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018690529081018290527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060600160405180910390a15050505050565b60006109a5611dac565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061095d9082908690610ddf908790612d7a565b6116a3565b600080610def610ebf565b9392505050565b6000806000610e03610ebf565b91509150808015610e145750600082115b9250505090565b610e23611ee4565b60005b8151811015610ebb57818181518110610e4157610e41612d8d565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663be040fb06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610e9057600080fd5b505af1158015610ea4573d6000803e3d6000fd5b505050508080610eb390612dbc565b915050610e26565b5050565b6000807f0000000000000000000000000000000000000000000000000000000000000000421015610ef35750600091829150565b7f0000000000000000000000000000000000000000000000000000000000000000610f3e7f000000000000000000000000000000000000000000000000000000000000000042612d67565b610f489190612d13565b91504261012c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610fba7f000000000000000000000000000000000000000000000000000000000000000087612cfc565b610fc49190612d7a565b610fce9190612d7a565b610fd89190612d7a565b1190509091565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604081205461096390610969565b611016611ee4565b6110206000611f65565b565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d59190612d4e565b91506008549050816000036110e957600191505b806000036110f45750805b9091565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a6020526040812054610963565b6000606080828080836111567f000000000000000000000000000000000000000000000000000000000000000083611fdc565b6111817f00000000000000000000000000000000000000000000000000000000000000006001611fdc565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6060600780546108cc90612c80565b600c54600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009291907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f9190612d4e565b6112999190612cfc565b6109a59190612d13565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610761565b6109c382868684036116a3565b60003361095d81858561192e565b600080600061138f611022565b9092509050816109868286612cfc565b6109d933826109dc565b6113b1611ee4565b73ffffffffffffffffffffffffffffffffffffffff8116611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610761565b6109d981611f65565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604090208054600181018255905b50919050565b600061096361149f611dac565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006114eb87878787612087565b915091506114f881612176565b5095945050505050565b61150a610df6565b611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5661756c743a2043616e6e6f742065786974207661756c74207768656e206f7560448201527f7473696465206f6620656e7465722f657869742077696e646f770000000000006064820152608401610761565b80156115a6576115a68382612329565b6040517f982755930000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff83811660248301527f00000000000000000000000000000000000000000000000000000000000000001690639827559390604401600060405180830381600087803b15801561163657600080fd5b505af115801561164a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018590527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364935001905060405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff8316611745576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff82166117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611928578181101561191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610761565b61192884848484036116a3565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166119d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8216611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081205490611aa483611382565b905080821015611b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600960205260408082208054859003905591861681529081208054839290611b7c908490612d7a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611be291815260200190565b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610761565b6000611c7982611382565b90508060086000828254611c8d9190612d7a565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081208054839290611cc7908490612d7a565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161184a565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611928908590612523565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015611e1257507f000000000000000000000000000000000000000000000000000000000000000046145b15611e3c57507f000000000000000000000000000000000000000000000000000000000000000090565b6109a5604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60025473ffffffffffffffffffffffffffffffffffffffff163314611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610761565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff8314611ff657611fef83612637565b9050610963565b81805461200290612c80565b80601f016020809104026020016040519081016040528092919081815260200182805461202e90612c80565b801561207b5780601f106120505761010080835404028352916020019161207b565b820191906000526020600020905b81548152906001019060200180831161205e57829003601f168201915b50505050509050610963565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156120be575060009050600361216d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612112573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166121665760006001925092505061216d565b9150600090505b94509492505050565b600081600481111561218a5761218a612df4565b036121925750565b60018160048111156121a6576121a6612df4565b0361220d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610761565b600281600481111561222157612221612df4565b03612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610761565b600381600481111561229c5761229c612df4565b036109d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff82166123cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812054906123fc83611382565b90508082101561248e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604081208284039055600880548392906124ca908490612d67565b909155505060405183815260009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6000612585826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126769092919063ffffffff16565b90508051600014806125a65750808060200190518101906125a69190612e23565b612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610761565b505050565b6060600061264483612685565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b606061099084846000856126c6565b600060ff8216601f811115610963576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082471015612758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610761565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127819190612e45565b60006040518083038185875af1925050503d80600081146127be576040519150601f19603f3d011682016040523d82523d6000602084013e6127c3565b606091505b50915091506127d4878383876127df565b979650505050505050565b6060831561287557825160000361286e5773ffffffffffffffffffffffffffffffffffffffff85163b61286e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610761565b5081610990565b610990838381511561288a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076191906129b0565b73ffffffffffffffffffffffffffffffffffffffff811681146109d957600080fd5b60008060008060008060c087890312156128f957600080fd5b8635612904816128be565b95506020870135945060408701359350606087013560ff8116811461292857600080fd5b9598949750929560808101359460a0909101359350915050565b60005b8381101561295d578181015183820152602001612945565b50506000910152565b6000815180845261297e816020860160208601612942565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610def6020830184612966565b600080604083850312156129d657600080fd5b82356129e1816128be565b946020939093013593505050565b600060208284031215612a0157600080fd5b5035919050565b600080600060608486031215612a1d57600080fd5b8335612a28816128be565b92506020840135612a38816128be565b929592945050506040919091013590565b600060208284031215612a5b57600080fd5b8135610def816128be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8035612aa0816128be565b919050565b60006020808385031215612ab857600080fd5b823567ffffffffffffffff80821115612ad057600080fd5b818501915085601f830112612ae457600080fd5b813581811115612af657612af6612a66565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715612b3957612b39612a66565b604052918252848201925083810185019188831115612b5757600080fd5b938501935b82851015612b7c57612b6d85612a95565b84529385019392850192612b5c565b98975050505050505050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152612bc460e084018a612966565b8381036040850152612bd6818a612966565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015612c3557835183529284019291840191600101612c19565b50909c9b505050505050505050505050565b60008060408385031215612c5a57600080fd5b8235612c65816128be565b91506020830135612c75816128be565b809150509250929050565b600181811c90821680612c9457607f821691505b60208210810361148c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761096357610963612ccd565b600082612d49577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612d6057600080fd5b5051919050565b8181038181111561096357610963612ccd565b8082018082111561096357610963612ccd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ded57612ded612ccd565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215612e3557600080fd5b81518015158114610def57600080fd5b60008251612e57818460208701612942565b919091019291505056fea26469706673582212208eb65146c9730b3f8a30161afade6d0783f540d14bdd5d5796102ae071443b0364736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102de5760003560e01c8063715018a611610186578063a9059cbb116100e3578063b9844d8d11610097578063e1eda8f911610071578063e1eda8f91461069a578063f2fde38b146106c1578063fc1d3de2146106d457600080fd5b8063b9844d8d1461062b578063bca8371f1461064b578063dd62ed3e1461065457600080fd5b8063b1a9069c116100c8578063b1a9069c146105ca578063b470aade146105f1578063b6b55f251461061857600080fd5b8063a9059cbb146105a4578063b0ff1106146105b757600080fd5b806384b0196e1161013a57806395d89b411161011f57806395d89b4114610581578063981fc37214610589578063a457c2d71461059157600080fd5b806384b0196e146105485780638da5cb5b1461056357600080fd5b80637ecebe001161016b5780637ecebe00146104e757806381771329146104fa57806382dad8ac1461052157600080fd5b8063715018a6146104d75780637c5a227c146104df57600080fd5b80633644e5151161023f5780634473ad52116101f35780636b2f1417116101cd5780636b2f14171461045b5780636eeeaaa51461047857806370a08231146104c457600080fd5b80634473ad521461040157806363ceec65146104215780636823920a1461044857600080fd5b80633a98ef39116102245780633a98ef39146103e85780633d355f76146103f157806341ffb72e146103f957600080fd5b80633644e515146103cd57806339509351146103d557600080fd5b806323b872dd116102965780632f4f21e21161027b5780632f4f21e214610388578063313ce5671461039b578063341533d9146103aa57600080fd5b806323b872dd146103625780632e1a7d4d1461037557600080fd5b8063095ea7b3116102c7578063095ea7b314610316578063174e4ea61461033957806318160ddd1461035a57600080fd5b8063061e5844146102e357806306fdde03146102f8575b600080fd5b6102f66102f13660046128e0565b6106fb565b005b6103006108bd565b60405161030d91906129b0565b60405180910390f35b6103296103243660046129c3565b61094f565b604051901515815260200161030d565b61034c6103473660046129ef565b610969565b60405190815260200161030d565b61034c610998565b610329610370366004612a08565b6109aa565b6102f66103833660046129ef565b6109ce565b6102f66103963660046129c3565b6109dc565b6040516012815260200161030d565b600b54600c546103b8919082565b6040805192835260208301919091520161030d565b61034c610d8e565b6103296103e33660046129c3565b610d98565b61034c60085481565b610329610de4565b610329610df6565b61034c61040f366004612a49565b60096020526000908152604090205481565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b6102f6610456366004612aa5565b610e1b565b610463610ebf565b6040805192835290151560208301520161030d565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030d565b61034c6104d2366004612a49565b610fdf565b6102f661100e565b6103b8611022565b61034c6104f5366004612a49565b6110f8565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b610550611123565b60405161030d9796959493929190612b88565b60025473ffffffffffffffffffffffffffffffffffffffff1661049f565b6103006111c7565b61034c6111d6565b61032961059f3660046129c3565b6112a3565b6103296105b23660046129c3565b611374565b61034c6105c53660046129ef565b611382565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b6102f66106263660046129ef565b61139f565b61034c610639366004612a49565b600a6020526000908152604090205481565b61034c61012c81565b61034c610662366004612c47565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61049f7f000000000000000000000000000000000000000000000000000000000000000081565b6102f66106cf366004612a49565b6113a9565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b8342111561076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5661756c743a206578706972656420646561646c696e6500000000000000000060448201526064015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008733888861079a8c61145d565b60408051602081019790975273ffffffffffffffffffffffffffffffffffffffff95861690870152939092166060850152608084015260a083015260c082015260e001604051602081830303815290604052805190602001209050600061080082611492565b90506000610810828787876114da565b90508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5661756c743a20696e76616c6964207369676e617475726500000000000000006044820152606401610761565b6108b289338a611502565b505050505050505050565b6060600680546108cc90612c80565b80601f01602080910402602001604051908101604052809291908181526020018280546108f890612c80565b80156109455780601f1061091a57610100808354040283529160200191610945565b820191906000526020600020905b81548152906001019060200180831161092857829003601f168201915b5050505050905090565b60003361095d8185856116a3565b60019150505b92915050565b6000806000610976611022565b9092509050806109868386612cfc565b6109909190612d13565b949350505050565b60006109a5600854610969565b905090565b6000336109b8858285611857565b6109c385858561192e565b506001949350505050565b6109d9333383611502565b50565b6109e4610de4565b610a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5661756c743a2043616e6e6f74206a6f696e207661756c74207768656e206f7560448201527f7473696465206f6620656e7465722f657869742077696e646f770000000000006064820152608401610761565b6040517f07e7cc270000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000060248201523060448201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307e7cc2790606401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190612d4e565b90506000670de0b6b3a7640000610b848385612cfc565b610b8e9190612d13565b9050808311610c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5661756c743a2043616e6e6f74206a6f696e207768656e20666565206973206860448201527f6967686572207468616e20616d6f756e740000000000000000000000000000006064820152608401610761565b6000610c2b8285612d67565b90508315610d3057610c3d8582611bf1565b610c897f0000000000000000000000000000000000000000000000000000000000000000337f000000000000000000000000000000000000000000000000000000000000000087611d17565b6040517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906340c10f1990604401600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050505b6040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018690529081018290527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060600160405180910390a15050505050565b60006109a5611dac565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061095d9082908690610ddf908790612d7a565b6116a3565b600080610def610ebf565b9392505050565b6000806000610e03610ebf565b91509150808015610e145750600082115b9250505090565b610e23611ee4565b60005b8151811015610ebb57818181518110610e4157610e41612d8d565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663be040fb06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610e9057600080fd5b505af1158015610ea4573d6000803e3d6000fd5b505050508080610eb390612dbc565b915050610e26565b5050565b6000807f0000000000000000000000000000000000000000000000000000000000000000421015610ef35750600091829150565b7f0000000000000000000000000000000000000000000000000000000000000000610f3e7f000000000000000000000000000000000000000000000000000000000000000042612d67565b610f489190612d13565b91504261012c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610fba7f000000000000000000000000000000000000000000000000000000000000000087612cfc565b610fc49190612d7a565b610fce9190612d7a565b610fd89190612d7a565b1190509091565b73ffffffffffffffffffffffffffffffffffffffff811660009081526009602052604081205461096390610969565b611016611ee4565b6110206000611f65565b565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d59190612d4e565b91506008549050816000036110e957600191505b806000036110f45750805b9091565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a6020526040812054610963565b6000606080828080836111567f000000000000000000000000000000000000000000000000000000000000000083611fdc565b6111817f00000000000000000000000000000000000000000000000000000000000000006001611fdc565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6060600780546108cc90612c80565b600c54600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009291907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f9190612d4e565b6112999190612cfc565b6109a59190612d13565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610761565b6109c382868684036116a3565b60003361095d81858561192e565b600080600061138f611022565b9092509050816109868286612cfc565b6109d933826109dc565b6113b1611ee4565b73ffffffffffffffffffffffffffffffffffffffff8116611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610761565b6109d981611f65565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604090208054600181018255905b50919050565b600061096361149f611dac565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006114eb87878787612087565b915091506114f881612176565b5095945050505050565b61150a610df6565b611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5661756c743a2043616e6e6f742065786974207661756c74207768656e206f7560448201527f7473696465206f6620656e7465722f657869742077696e646f770000000000006064820152608401610761565b80156115a6576115a68382612329565b6040517f982755930000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff83811660248301527f00000000000000000000000000000000000000000000000000000000000000001690639827559390604401600060405180830381600087803b15801561163657600080fd5b505af115801561164a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018590527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364935001905060405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff8316611745576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff82166117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611928578181101561191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610761565b61192884848484036116a3565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166119d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8216611a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081205490611aa483611382565b905080821015611b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600960205260408082208054859003905591861681529081208054839290611b7c908490612d7a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611be291815260200190565b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610761565b6000611c7982611382565b90508060086000828254611c8d9190612d7a565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081208054839290611cc7908490612d7a565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161184a565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611928908590612523565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015611e1257507f000000000000000000000000000000000000000000000000000000000000000046145b15611e3c57507f000000000000000000000000000000000000000000000000000000000000000090565b6109a5604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60025473ffffffffffffffffffffffffffffffffffffffff163314611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610761565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff8314611ff657611fef83612637565b9050610963565b81805461200290612c80565b80601f016020809104026020016040519081016040528092919081815260200182805461202e90612c80565b801561207b5780601f106120505761010080835404028352916020019161207b565b820191906000526020600020905b81548152906001019060200180831161205e57829003601f168201915b50505050509050610963565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156120be575060009050600361216d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612112573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166121665760006001925092505061216d565b9150600090505b94509492505050565b600081600481111561218a5761218a612df4565b036121925750565b60018160048111156121a6576121a6612df4565b0361220d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610761565b600281600481111561222157612221612df4565b03612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610761565b600381600481111561229c5761229c612df4565b036109d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff82166123cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812054906123fc83611382565b90508082101561248e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610761565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604081208284039055600880548392906124ca908490612d67565b909155505060405183815260009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6000612585826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126769092919063ffffffff16565b90508051600014806125a65750808060200190518101906125a69190612e23565b612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610761565b505050565b6060600061264483612685565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b606061099084846000856126c6565b600060ff8216601f811115610963576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082471015612758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610761565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127819190612e45565b60006040518083038185875af1925050503d80600081146127be576040519150601f19603f3d011682016040523d82523d6000602084013e6127c3565b606091505b50915091506127d4878383876127df565b979650505050505050565b6060831561287557825160000361286e5773ffffffffffffffffffffffffffffffffffffffff85163b61286e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610761565b5081610990565b610990838381511561288a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076191906129b0565b73ffffffffffffffffffffffffffffffffffffffff811681146109d957600080fd5b60008060008060008060c087890312156128f957600080fd5b8635612904816128be565b95506020870135945060408701359350606087013560ff8116811461292857600080fd5b9598949750929560808101359460a0909101359350915050565b60005b8381101561295d578181015183820152602001612945565b50506000910152565b6000815180845261297e816020860160208601612942565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610def6020830184612966565b600080604083850312156129d657600080fd5b82356129e1816128be565b946020939093013593505050565b600060208284031215612a0157600080fd5b5035919050565b600080600060608486031215612a1d57600080fd5b8335612a28816128be565b92506020840135612a38816128be565b929592945050506040919091013590565b600060208284031215612a5b57600080fd5b8135610def816128be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8035612aa0816128be565b919050565b60006020808385031215612ab857600080fd5b823567ffffffffffffffff80821115612ad057600080fd5b818501915085601f830112612ae457600080fd5b813581811115612af657612af6612a66565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715612b3957612b39612a66565b604052918252848201925083810185019188831115612b5757600080fd5b938501935b82851015612b7c57612b6d85612a95565b84529385019392850192612b5c565b98975050505050505050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152612bc460e084018a612966565b8381036040850152612bd6818a612966565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015612c3557835183529284019291840191600101612c19565b50909c9b505050505050505050505050565b60008060408385031215612c5a57600080fd5b8235612c65816128be565b91506020830135612c75816128be565b809150509250929050565b600181811c90821680612c9457607f821691505b60208210810361148c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761096357610963612ccd565b600082612d49577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612d6057600080fd5b5051919050565b8181038181111561096357610963612ccd565b8082018082111561096357610963612ccd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ded57612ded612ccd565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215612e3557600080fd5b81518015158114610def57600080fd5b60008251612e57818460208701612942565b919091019291505056fea26469706673582212208eb65146c9730b3f8a30161afade6d0783f540d14bdd5d5796102ae071443b0364736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/VaultEarlyWithdraw.sol/IVault.json b/apps/dapp/abi/contracts/core/VaultEarlyWithdraw.sol/IVault.json new file mode 100644 index 000000000..7a7af6d52 --- /dev/null +++ b/apps/dapp/abi/contracts/core/VaultEarlyWithdraw.sol/IVault.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IVault", + "sourceName": "contracts/core/VaultEarlyWithdraw.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "sharesAmount", + "type": "uint256" + } + ], + "name": "toTokenAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/VaultEarlyWithdraw.sol/VaultEarlyWithdraw.json b/apps/dapp/abi/contracts/core/VaultEarlyWithdraw.sol/VaultEarlyWithdraw.json new file mode 100644 index 000000000..f03e6df0d --- /dev/null +++ b/apps/dapp/abi/contracts/core/VaultEarlyWithdraw.sol/VaultEarlyWithdraw.json @@ -0,0 +1,320 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "VaultEarlyWithdraw", + "sourceName": "contracts/core/VaultEarlyWithdraw.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_templeTokenAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_validVaults", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_addr", + "type": "address" + } + ], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_vaultAddress", + "type": "address" + } + ], + "name": "InvalidVault", + "type": "error" + }, + { + "inputs": [], + "name": "MinAmountNotMet", + "type": "error" + }, + { + "inputs": [], + "name": "SendFailed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "EarlyWithdraw", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "MinWithdrawAmountSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRecovered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "minWithdrawAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setMinWithdrawAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "validVaults", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_vault", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_templeAmount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a06040526103e86002553480156200001757600080fd5b5060405162001114380380620011148339810160408190526200003a916200015d565b6000805460ff191690556200004f33620000d1565b6001600160a01b03821660805260005b8151811015620000c857600180600084848151811062000083576200008362000246565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055620000c0816200025c565b90506200005f565b50505062000284565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b80516001600160a01b03811681146200014257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200017157600080fd5b6200017c836200012a565b602084810151919350906001600160401b03808211156200019c57600080fd5b818601915086601f830112620001b157600080fd5b815181811115620001c657620001c662000147565b8060051b604051601f19603f83011681018181108582111715620001ee57620001ee62000147565b6040529182528482019250838101850191898311156200020d57600080fd5b938501935b82851015620002365762000226856200012a565b8452938501939285019262000212565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200027d57634e487b7160e01b600052601160045260246000fd5b5060010190565b608051610e6d620002a7600039600081816101b8015261054a0152610e6d6000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638456cb5911610081578063b1a9069c1161005b578063b1a9069c146101b3578063f2fde38b146101da578063f3fef3a3146101ed57600080fd5b80638456cb59146101545780638da5cb5b1461015c578063a7229fd9146101a057600080fd5b80635c975abb116100b25780635c975abb146101125780636657fc6714610129578063715018a61461014c57600080fd5b80633f4ba83a146100d9578063457e1a49146100e35780635abdb0dc146100ff575b600080fd5b6100e1610200565b005b6100ec60025481565b6040519081526020015b60405180910390f35b6100e161010d366004610cba565b610212565b60005460ff165b60405190151581526020016100f6565b610119610137366004610cfc565b60016020526000908152604090205460ff1681565b6100e1610255565b6100e1610267565b600054610100900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f6565b6100e16101ae366004610d1e565b610277565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b6100e16101e8366004610cfc565b610376565b6100e16101fb366004610d5a565b61042d565b6102086105aa565b610210610631565b565b61021a6105aa565b60028190556040518181527f755134315a797bb3da2a1dd9a4fe4183310c83d99e9b32ca94eb17d356a083e69060200160405180910390a150565b61025d6105aa565b61021060006106ae565b61026f6105aa565b61021061072b565b61027f6105aa565b73ffffffffffffffffffffffffffffffffffffffff82166102e9576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024015b60405180910390fd5b61030a73ffffffffffffffffffffffffffffffffffffffff84168383610786565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161036991815260200190565b60405180910390a3505050565b61037e6105aa565b73ffffffffffffffffffffffffffffffffffffffff8116610421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102e0565b61042a816106ae565b50565b61043561085f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166104ac576040517faf7301ae00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016102e0565b6002548110156104e8576040517f2fe65d3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105303361051160005473ffffffffffffffffffffffffffffffffffffffff6101009091041690565b73ffffffffffffffffffffffffffffffffffffffff85169190846108cc565b61057173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163383610786565b60405181815233907f79273e16333ddc825a0d0ac202d9e533b62bc03870b7f8c978b30afad47efeca9060200160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff610100909104163314610210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e0565b610639610930565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b61073361085f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586106843390565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261085a9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261099c565b505050565b60005460ff1615610210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016102e0565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261092a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016107d8565b50505050565b60005460ff16610210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016102e0565b60006109fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610aab9092919063ffffffff16565b9050805160001480610a1f575080806020019051810190610a1f9190610d84565b61085a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102e0565b6060610aba8484600085610ac2565b949350505050565b606082471015610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102e0565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610b7d9190610dca565b60006040518083038185875af1925050503d8060008114610bba576040519150601f19603f3d011682016040523d82523d6000602084013e610bbf565b606091505b5091509150610bd087838387610bdb565b979650505050505050565b60608315610c71578251600003610c6a5773ffffffffffffffffffffffffffffffffffffffff85163b610c6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102e0565b5081610aba565b610aba8383815115610c865781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e09190610de6565b600060208284031215610ccc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cf757600080fd5b919050565b600060208284031215610d0e57600080fd5b610d1782610cd3565b9392505050565b600080600060608486031215610d3357600080fd5b610d3c84610cd3565b9250610d4a60208501610cd3565b9150604084013590509250925092565b60008060408385031215610d6d57600080fd5b610d7683610cd3565b946020939093013593505050565b600060208284031215610d9657600080fd5b81518015158114610d1757600080fd5b60005b83811015610dc1578181015183820152602001610da9565b50506000910152565b60008251610ddc818460208701610da6565b9190910192915050565b6020815260008251806020840152610e05816040850160208701610da6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122079ca258e92c2395efbaf8a9766f63c9026043db1194c3f93a5dbd2db177abec864736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638456cb5911610081578063b1a9069c1161005b578063b1a9069c146101b3578063f2fde38b146101da578063f3fef3a3146101ed57600080fd5b80638456cb59146101545780638da5cb5b1461015c578063a7229fd9146101a057600080fd5b80635c975abb116100b25780635c975abb146101125780636657fc6714610129578063715018a61461014c57600080fd5b80633f4ba83a146100d9578063457e1a49146100e35780635abdb0dc146100ff575b600080fd5b6100e1610200565b005b6100ec60025481565b6040519081526020015b60405180910390f35b6100e161010d366004610cba565b610212565b60005460ff165b60405190151581526020016100f6565b610119610137366004610cfc565b60016020526000908152604090205460ff1681565b6100e1610255565b6100e1610267565b600054610100900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f6565b6100e16101ae366004610d1e565b610277565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b6100e16101e8366004610cfc565b610376565b6100e16101fb366004610d5a565b61042d565b6102086105aa565b610210610631565b565b61021a6105aa565b60028190556040518181527f755134315a797bb3da2a1dd9a4fe4183310c83d99e9b32ca94eb17d356a083e69060200160405180910390a150565b61025d6105aa565b61021060006106ae565b61026f6105aa565b61021061072b565b61027f6105aa565b73ffffffffffffffffffffffffffffffffffffffff82166102e9576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024015b60405180910390fd5b61030a73ffffffffffffffffffffffffffffffffffffffff84168383610786565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161036991815260200190565b60405180910390a3505050565b61037e6105aa565b73ffffffffffffffffffffffffffffffffffffffff8116610421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102e0565b61042a816106ae565b50565b61043561085f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166104ac576040517faf7301ae00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016102e0565b6002548110156104e8576040517f2fe65d3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105303361051160005473ffffffffffffffffffffffffffffffffffffffff6101009091041690565b73ffffffffffffffffffffffffffffffffffffffff85169190846108cc565b61057173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163383610786565b60405181815233907f79273e16333ddc825a0d0ac202d9e533b62bc03870b7f8c978b30afad47efeca9060200160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff610100909104163314610210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e0565b610639610930565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b61073361085f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586106843390565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261085a9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261099c565b505050565b60005460ff1615610210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016102e0565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261092a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016107d8565b50505050565b60005460ff16610210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016102e0565b60006109fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610aab9092919063ffffffff16565b9050805160001480610a1f575080806020019051810190610a1f9190610d84565b61085a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102e0565b6060610aba8484600085610ac2565b949350505050565b606082471015610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102e0565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610b7d9190610dca565b60006040518083038185875af1925050503d8060008114610bba576040519150601f19603f3d011682016040523d82523d6000602084013e610bbf565b606091505b5091509150610bd087838387610bdb565b979650505050505050565b60608315610c71578251600003610c6a5773ffffffffffffffffffffffffffffffffffffffff85163b610c6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102e0565b5081610aba565b610aba8383815115610c865781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e09190610de6565b600060208284031215610ccc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cf757600080fd5b919050565b600060208284031215610d0e57600080fd5b610d1782610cd3565b9392505050565b600080600060608486031215610d3357600080fd5b610d3c84610cd3565b9250610d4a60208501610cd3565b9150604084013590509250925092565b60008060408385031215610d6d57600080fd5b610d7683610cd3565b946020939093013593505050565b600060208284031215610d9657600080fd5b81518015158114610d1757600080fd5b60005b83811015610dc1578181015183820152602001610da9565b50506000910152565b60008251610ddc818460208701610da6565b9190910192915050565b6020815260008251806020840152610e05816040850160208701610da6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122079ca258e92c2395efbaf8a9766f63c9026043db1194c3f93a5dbd2db177abec864736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/VaultProxy.sol/VaultProxy.json b/apps/dapp/abi/contracts/core/VaultProxy.sol/VaultProxy.json new file mode 100644 index 000000000..d87e60f30 --- /dev/null +++ b/apps/dapp/abi/contracts/core/VaultProxy.sol/VaultProxy.json @@ -0,0 +1,290 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "VaultProxy", + "sourceName": "contracts/core/VaultProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract OGTemple", + "name": "_ogTemple", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "_temple", + "type": "address" + }, + { + "internalType": "contract TempleStaking", + "name": "_templeStaking", + "type": "address" + }, + { + "internalType": "contract Faith", + "name": "_faith", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "contract Vault", + "name": "vault", + "type": "address" + } + ], + "name": "depositTempleFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountTemple", + "type": "uint256" + }, + { + "internalType": "uint112", + "name": "_amountFaith", + "type": "uint112" + }, + { + "internalType": "contract Vault", + "name": "vault", + "type": "address" + } + ], + "name": "depositTempleWithFaith", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "faith", + "outputs": [ + { + "internalType": "contract Faith", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "faithClaimEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountFaith", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amountTemple", + "type": "uint256" + } + ], + "name": "getFaithMultiplier", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "ogTemple", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "temple", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "templeStaking", + "outputs": [ + { + "internalType": "contract TempleStaking", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "toggleFaithClaimEnabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountOGT", + "type": "uint256" + }, + { + "internalType": "contract Vault", + "name": "vault", + "type": "address" + } + ], + "name": "unstakeAndDepositIntoVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountOGT", + "type": "uint256" + }, + { + "internalType": "uint112", + "name": "_amountFaith", + "type": "uint112" + }, + { + "internalType": "contract Vault", + "name": "vault", + "type": "address" + } + ], + "name": "unstakeAndDepositTempleWithFaith", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101006040523480156200001257600080fd5b5060405162002a9938038062002a998339810160408190526200003591620000df565b620000403362000076565b6001600160a01b0393841660805291831660a052821660c0521660e0526000805460ff60a01b1916600160a01b17905562000147565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000dc57600080fd5b50565b60008060008060808587031215620000f657600080fd5b84516200010381620000c6565b60208601519094506200011681620000c6565b60408601519093506200012981620000c6565b60608601519092506200013c81620000c6565b939692955090935050565b60805160a05160c05160e0516128b7620001e26000396000818161019a0152818161048c01526108b501526000818160ff01528181611f5c015261209001526000818161021b015281816102bd015281816102e8015281816105200152818161054c0152818161095601528181610a1b01528181611fde015261213101526000818161029601528181611f3b0152611f8601526128b76000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063c852f2cd11610066578063c852f2cd14610258578063d9caed121461026b578063f2fde38b1461027e578063fa949e021461029157600080fd5b80638da5cb5b146101f857806397cd9a34146102165780639ceaf48e1461023d578063ab1db0391461024557600080fd5b80636e5640c6116100d35780636e5640c6146101955780636f1ae0ab146101bc578063715018a6146101cf578063773eb42e146101d757600080fd5b80631138a22d146100fa578063637fc0a51461014b578063695957c414610180575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6000546101709074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610142565b61019361018e3660046125fd565b6102b8565b005b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6101936101ca36600461262d565b610399565b6101936105fe565b6101ea6101e5366004612682565b610612565b604051908152602001610142565b60005473ffffffffffffffffffffffffffffffffffffffff16610121565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b610193610772565b61019361025336600461262d565b6107c7565b6101936102663660046125fd565b610a09565b6101936102793660046126a4565b610acc565b61019361028c3660046126e5565b610c4c565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6102e37f00000000000000000000000000000000000000000000000000000000000000008284610d03565b61030f7f0000000000000000000000000000000000000000000000000000000000000000333085610e7a565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff821690632f4f21e290604401600060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050505050565b60005474010000000000000000000000000000000000000000900460ff16610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5661756c7450726f78793a20466169746820636c61696d206e6f206c6f6e676560448201527f7220656e61626c6564000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6040517f3a847cb20000000000000000000000000000000000000000000000000000000081523360048201526dffffffffffffffffffffffffffff831660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a847cb290604401600060405180830381600087803b1580156104e557600080fd5b505af11580156104f9573d6000803e3d6000fd5b505050506000610519836dffffffffffffffffffffffffffff1685610612565b90506105477f0000000000000000000000000000000000000000000000000000000000000000333087610e7a565b6105727f00000000000000000000000000000000000000000000000000000000000000008383610d03565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff831690632f4f21e290604401600060405180830381600087803b1580156105e057600080fd5b505af11580156105f4573d6000803e3d6000fd5b5050505050505050565b610606610ed8565b6106106000610f59565b565b60008061061e84610fce565b9050600061062b84610fce565b905060006106ba61068861065f7f40004000000000000000000000000000000000000000000000000000000000008561103c565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000086169061148e565b6106926001610fce565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000016906118b5565b905060007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082167f3fff4ccccccccccccccccccccccccccc000000000000000000000000000000001061070d578161072f565b7f3fff4ccccccccccccccccccccccccccc000000000000000000000000000000005b90506107656107607fffffffffffffffffffffffffffffffff0000000000000000000000000000000085168361103c565b611e75565b9450505050505b92915050565b61077a610ed8565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116740100000000000000000000000000000000000000009182900460ff1615909102179055565b60005474010000000000000000000000000000000000000000900460ff16610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5661756c7450726f78793a20466169746820636c61696d206e6f206c6f6e676560448201527f7220656e61626c65640000000000000000000000000000000000000000000000606482015260840161043f565b6040517f3a847cb20000000000000000000000000000000000000000000000000000000081523360048201526dffffffffffffffffffffffffffff831660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a847cb290604401600060405180830381600087803b15801561090e57600080fd5b505af1158015610922573d6000803e3d6000fd5b50505050600061093184611f34565b9050600061094f846dffffffffffffffffffffffffffff1683610612565b905061097c7f00000000000000000000000000000000000000000000000000000000000000008483610d03565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff841690632f4f21e290604401600060405180830381600087803b1580156109ea57600080fd5b505af11580156109fe573d6000803e3d6000fd5b505050505050505050565b6000610a1483611f34565b9050610a417f00000000000000000000000000000000000000000000000000000000000000008383610d03565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff831690632f4f21e290604401600060405180830381600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b50505050505050565b610ad4610ed8565b73ffffffffffffffffffffffffffffffffffffffff8216610b51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f746f2061646472657373207a65726f0000000000000000000000000000000000604482015260640161043f565b73ffffffffffffffffffffffffffffffffffffffff8316610c3c5760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610bc6576040519150601f19603f3d011682016040523d82523d6000602084013e610bcb565b606091505b5050905080610c36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f73656e64206661696c6564000000000000000000000000000000000000000000604482015260640161043f565b50505050565b610c47838383612255565b505050565b610c54610ed8565b73ffffffffffffffffffffffffffffffffffffffff8116610cf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161043f565b610d0081610f59565b50565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015610d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9d9190612702565b9050610c36847f095ea7b30000000000000000000000000000000000000000000000000000000085610dcf868661274a565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526122ab565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610c369085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610df8565b60005473ffffffffffffffffffffffffffffffffffffffff163314610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081600003610fe057506000919050565b816000610fec826123ba565b90506070811015611005578060700382901b9150611018565b6070811115611018576070810382901c91505b613fff0160701b6dffffffffffffffffffffffffffff919091161760801b92915050565b6000617fff60f084811c8216919084901c8116908290036111bc5780617fff0361113a577fffffffffffffffffffffffffffffffff00000000000000000000000000000000808516908616036110b9575050507f80000000000000000000000000000000000000000000000000000000000000008116821861076c565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000858518167f80000000000000000000000000000000000000000000000000000000000000000361110f5750505081811761076c565b507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b7f7fffffffffffffffffffffffffffffff00000000000000000000000000000000841660000361118f57507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b5050507f80000000000000000000000000000000000000000000000000000000000000008116821861076c565b80617fff03611247577f7fffffffffffffffffffffffffffffff00000000000000000000000000000000851660000361121a57507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b5050507f80000000000000000000000000000000000000000000000000000000000000008216811861076c565b6dffffffffffffffffffffffffffff608086901c16600083900361126e5760019250611280565b6e010000000000000000000000000000175b6dffffffffffffffffffffffffffff608086901c1660008390036112a757600192506112b9565b6e010000000000000000000000000000175b808202915081600003611323577f8000000000000000000000000000000000000000000000000000000000000000878718166112f6576000611318565b7f80000000000000000000000000000000000000000000000000000000000000005b94505050505061076c565b9282019260007c0200000000000000000000000000000000000000000000000000000000831015611388577c01000000000000000000000000000000000000000000000000000000008310156113815761137c836123ba565b61138b565b60e061138b565b60e15b905061407081860110156113a657600094506000925061144a565b6140e081860110156113e9576140708510156113cb57846140700383901c92506113e0565b6140708511156113e057614070850383901b92505b6000945061144a565b61c0dd818601111561140357617fff94506000925061144a565b607081111561141a576070810383901c925061142d565b607081101561142d578060700383901b92505b6dffffffffffffffffffffffffffff831692506140df8186010394505b82607086901b888a186f8000000000000000000000000000000060801b1660801c6fffffffffffffffffffffffffffffffff16171760801b9550505050505061076c565b6000617fff60f084811c8216919084901c8116908290036114dd5780617fff0361118f57507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b80617fff03611564577dffffffffffffffffffffffffffff0000000000000000000000000000000084161561153757507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b5050508082187f80000000000000000000000000000000000000000000000000000000000000001661076c565b7f7fffffffffffffffffffffffffffffff000000000000000000000000000000008416600003611632577f7fffffffffffffffffffffffffffffff0000000000000000000000000000000085166000036115e357507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b5050508082187f8000000000000000000000000000000000000000000000000000000000000000167f7fff0000000000000000000000000000000000000000000000000000000000001761076c565b6dffffffffffffffffffffffffffff608085901c166000829003611659576001915061166b565b6e010000000000000000000000000000175b6dffffffffffffffffffffffffffff608087901c1660008490036116d35780156116ce57600061169a826123ba565b6001955060e2039384017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8e01939190911b90505b6116e8565b6e0100000000000000000000000000001760721b5b8181816116f7576116f761275d565b04905080600003611732577f8000000000000000000000000000000000000000000000000000000000000000878718166112f6576000611318565b6d10000000000000000000000000008110156117505761175061278c565b60006e0800000000000000000000000000008210156117b0576e0400000000000000000000000000008210156117a5576e02000000000000000000000000000082101561179e5760706117a8565b60716117a8565b60725b60ff166117b9565b6117b9826123ba565b9050836140710181860111156117d757617fff945060009150611871565b83818601613ffc0110156117f2576000945060009150611871565b83818601613f8c01101561183f578385613ffc01111561181d578385613ffc010382901b9150611836565b8385613ffc01101561183657613ffc8585030382901c91505b60009450611871565b6070811115611852576070810382901c91505b6dffffffffffffffffffffffffffff8216915083818601613f8d010394505b81607086901b888a186f8000000000000000000000000000000060801b1660801c6fffffffffffffffffffffffffffffffff16171760801b9550505050505061076c565b6000617fff60f084811c8216919084901c8116908290036119195780617fff0361190f577fffffffffffffffffffffffffffffffff000000000000000000000000000000008085169086160361110f57849250505061076c565b849250505061076c565b80617fff0361192c57839250505061076c565b6f80000000000000000000000000000000608086901c90811015906dffffffffffffffffffffffffffff166000849003611969576001935061197b565b6e010000000000000000000000000000175b6f80000000000000000000000000000000608087901c90811015906dffffffffffffffffffffffffffff1660008590036119b857600194506119ca565b6e010000000000000000000000000000175b82600003611a31577fffffffffffffffffffffffffffffffff0000000000000000000000000000000088167f800000000000000000000000000000000000000000000000000000000000000014611a215787611a24565b60005b965050505050505061076c565b80600003611a88577fffffffffffffffffffffffffffffffff0000000000000000000000000000000089167f800000000000000000000000000000000000000000000000000000000000000014611a215788611a24565b84860382151585151503611c14576070811315611aae578997505050505050505061076c565b6000811315611ac05790811c90611b0d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811215611af7578897505050505050505061076c565b6000811215611b0d578060000384901c93508596505b928101926e0200000000000000000000000000008410611b33576001968701969390931c925b86617fff03611b975784611b67577f7fff000000000000000000000000000000000000000000000000000000000000611b89565b7fffff0000000000000000000000000000000000000000000000000000000000005b97505050505050505061076c565b6e010000000000000000000000000000841015611bb75760009650611bcb565b6dffffffffffffffffffffffffffff841693505b83607088901b86611bdd576000611bef565b6f800000000000000000000000000000005b6fffffffffffffffffffffffffffffffff16171760801b97505050505050505061076c565b6000811315611c2f57600184901b9350600187039650611c46565b6000811215611c4657600182901b91506001860396505b6070811315611c585760019150611ce1565b6001811315611c75576001810360018303901c6001019150611ce1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811215611ca65760019350611ce1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811215611ce1576001816000030360018503901c60010193505b818410611cf2578184039350611cfb565b83820393508294505b83600003611d1457506000965061076c95505050505050565b6000611d1f856123ba565b905080607103611d4b57600185901c6dffffffffffffffffffffffffffff169450600188019750611dc6565b6070811015611db257607081900380891115611d81578086901b6dffffffffffffffffffffffffffff1695508089039850611dac565b6000987fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019590951b945b50611dc6565b6dffffffffffffffffffffffffffff851694505b87617fff03611e2b5785611dfa577f7fff000000000000000000000000000000000000000000000000000000000000611e1c565b7fffff0000000000000000000000000000000000000000000000000000000000005b9850505050505050505061076c565b84607089901b87611e3d576000611e4f565b6f800000000000000000000000000000005b6fffffffffffffffffffffffffffffffff16171760801b9850505050505050505061076c565b6000617fff60f083901c16613fff811015611e935750600092915050565b6f80000000000000000000000000000000608084901c10611eb357600080fd5b6140fe811115611ec257600080fd5b6e0100000000000000000000000000006dffffffffffffffffffffffffffff608085901c161761406f821015611efe5761406f8290031c611f2d565b61406f821115611f2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf9182011b5b9392505050565b6000611f817f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084610d03565b611fad7f0000000000000000000000000000000000000000000000000000000000000000333085610e7a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e9190612702565b6040517f2e17de78000000000000000000000000000000000000000000000000000000008152600481018590529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e17de7890602401600060405180830381600087803b1580156120e957600080fd5b505af11580156120fd573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691506370a0823190602401602060405180830381865afa15801561218e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b29190612702565b9050818111612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5661756c742050726f78793a206e6f2054656d706c652072656365697665642060448201527f7768656e20756e7374616b696e67000000000000000000000000000000000000606482015260840161043f565b61224d82826127bb565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c479084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610df8565b600061230d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661246a9092919063ffffffff16565b905080516000148061232e57508080602001905181019061232e91906127ce565b610c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161043f565b60008082116123c857600080fd5b600070010000000000000000000000000000000083106123ea57608092831c92015b68010000000000000000831061240257604092831c92015b640100000000831061241657602092831c92015b62010000831061242857601092831c92015b610100831061243957600892831c92015b6010831061244957600492831c92015b6004831061245957600292831c92015b6002831061076c5760010192915050565b606061224d8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161249e9190612814565b60006040518083038185875af1925050503d80600081146124db576040519150601f19603f3d011682016040523d82523d6000602084013e6124e0565b606091505b50915091506124f1878383876124fc565b979650505050505050565b6060831561259257825160000361258b5773ffffffffffffffffffffffffffffffffffffffff85163b61258b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161043f565b508161224d565b61224d83838151156125a75781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043f9190612830565b73ffffffffffffffffffffffffffffffffffffffff81168114610d0057600080fd5b6000806040838503121561261057600080fd5b823591506020830135612622816125db565b809150509250929050565b60008060006060848603121561264257600080fd5b8335925060208401356dffffffffffffffffffffffffffff8116811461266757600080fd5b91506040840135612677816125db565b809150509250925092565b6000806040838503121561269557600080fd5b50508035926020909101359150565b6000806000606084860312156126b957600080fd5b83356126c4816125db565b925060208401356126d4816125db565b929592945050506040919091013590565b6000602082840312156126f757600080fd5b8135611f2d816125db565b60006020828403121561271457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076c5761076c61271b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8181038181111561076c5761076c61271b565b6000602082840312156127e057600080fd5b81518015158114611f2d57600080fd5b60005b8381101561280b5781810151838201526020016127f3565b50506000910152565b600082516128268184602087016127f0565b9190910192915050565b602081526000825180602084015261284f8160408501602087016127f0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220bef2cd724911ab5e310ce59bfeb0036311cb71aca0ae383405b8e1bff8fd390664736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063c852f2cd11610066578063c852f2cd14610258578063d9caed121461026b578063f2fde38b1461027e578063fa949e021461029157600080fd5b80638da5cb5b146101f857806397cd9a34146102165780639ceaf48e1461023d578063ab1db0391461024557600080fd5b80636e5640c6116100d35780636e5640c6146101955780636f1ae0ab146101bc578063715018a6146101cf578063773eb42e146101d757600080fd5b80631138a22d146100fa578063637fc0a51461014b578063695957c414610180575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6000546101709074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610142565b61019361018e3660046125fd565b6102b8565b005b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6101936101ca36600461262d565b610399565b6101936105fe565b6101ea6101e5366004612682565b610612565b604051908152602001610142565b60005473ffffffffffffffffffffffffffffffffffffffff16610121565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b610193610772565b61019361025336600461262d565b6107c7565b6101936102663660046125fd565b610a09565b6101936102793660046126a4565b610acc565b61019361028c3660046126e5565b610c4c565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6102e37f00000000000000000000000000000000000000000000000000000000000000008284610d03565b61030f7f0000000000000000000000000000000000000000000000000000000000000000333085610e7a565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff821690632f4f21e290604401600060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050505050565b60005474010000000000000000000000000000000000000000900460ff16610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5661756c7450726f78793a20466169746820636c61696d206e6f206c6f6e676560448201527f7220656e61626c6564000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6040517f3a847cb20000000000000000000000000000000000000000000000000000000081523360048201526dffffffffffffffffffffffffffff831660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a847cb290604401600060405180830381600087803b1580156104e557600080fd5b505af11580156104f9573d6000803e3d6000fd5b505050506000610519836dffffffffffffffffffffffffffff1685610612565b90506105477f0000000000000000000000000000000000000000000000000000000000000000333087610e7a565b6105727f00000000000000000000000000000000000000000000000000000000000000008383610d03565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff831690632f4f21e290604401600060405180830381600087803b1580156105e057600080fd5b505af11580156105f4573d6000803e3d6000fd5b5050505050505050565b610606610ed8565b6106106000610f59565b565b60008061061e84610fce565b9050600061062b84610fce565b905060006106ba61068861065f7f40004000000000000000000000000000000000000000000000000000000000008561103c565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000086169061148e565b6106926001610fce565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000016906118b5565b905060007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082167f3fff4ccccccccccccccccccccccccccc000000000000000000000000000000001061070d578161072f565b7f3fff4ccccccccccccccccccccccccccc000000000000000000000000000000005b90506107656107607fffffffffffffffffffffffffffffffff0000000000000000000000000000000085168361103c565b611e75565b9450505050505b92915050565b61077a610ed8565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116740100000000000000000000000000000000000000009182900460ff1615909102179055565b60005474010000000000000000000000000000000000000000900460ff16610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5661756c7450726f78793a20466169746820636c61696d206e6f206c6f6e676560448201527f7220656e61626c65640000000000000000000000000000000000000000000000606482015260840161043f565b6040517f3a847cb20000000000000000000000000000000000000000000000000000000081523360048201526dffffffffffffffffffffffffffff831660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a847cb290604401600060405180830381600087803b15801561090e57600080fd5b505af1158015610922573d6000803e3d6000fd5b50505050600061093184611f34565b9050600061094f846dffffffffffffffffffffffffffff1683610612565b905061097c7f00000000000000000000000000000000000000000000000000000000000000008483610d03565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff841690632f4f21e290604401600060405180830381600087803b1580156109ea57600080fd5b505af11580156109fe573d6000803e3d6000fd5b505050505050505050565b6000610a1483611f34565b9050610a417f00000000000000000000000000000000000000000000000000000000000000008383610d03565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff831690632f4f21e290604401600060405180830381600087803b158015610aaf57600080fd5b505af1158015610ac3573d6000803e3d6000fd5b50505050505050565b610ad4610ed8565b73ffffffffffffffffffffffffffffffffffffffff8216610b51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f746f2061646472657373207a65726f0000000000000000000000000000000000604482015260640161043f565b73ffffffffffffffffffffffffffffffffffffffff8316610c3c5760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610bc6576040519150601f19603f3d011682016040523d82523d6000602084013e610bcb565b606091505b5050905080610c36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f73656e64206661696c6564000000000000000000000000000000000000000000604482015260640161043f565b50505050565b610c47838383612255565b505050565b610c54610ed8565b73ffffffffffffffffffffffffffffffffffffffff8116610cf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161043f565b610d0081610f59565b50565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015610d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9d9190612702565b9050610c36847f095ea7b30000000000000000000000000000000000000000000000000000000085610dcf868661274a565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526122ab565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610c369085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610df8565b60005473ffffffffffffffffffffffffffffffffffffffff163314610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081600003610fe057506000919050565b816000610fec826123ba565b90506070811015611005578060700382901b9150611018565b6070811115611018576070810382901c91505b613fff0160701b6dffffffffffffffffffffffffffff919091161760801b92915050565b6000617fff60f084811c8216919084901c8116908290036111bc5780617fff0361113a577fffffffffffffffffffffffffffffffff00000000000000000000000000000000808516908616036110b9575050507f80000000000000000000000000000000000000000000000000000000000000008116821861076c565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000858518167f80000000000000000000000000000000000000000000000000000000000000000361110f5750505081811761076c565b507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b7f7fffffffffffffffffffffffffffffff00000000000000000000000000000000841660000361118f57507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b5050507f80000000000000000000000000000000000000000000000000000000000000008116821861076c565b80617fff03611247577f7fffffffffffffffffffffffffffffff00000000000000000000000000000000851660000361121a57507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b5050507f80000000000000000000000000000000000000000000000000000000000000008216811861076c565b6dffffffffffffffffffffffffffff608086901c16600083900361126e5760019250611280565b6e010000000000000000000000000000175b6dffffffffffffffffffffffffffff608086901c1660008390036112a757600192506112b9565b6e010000000000000000000000000000175b808202915081600003611323577f8000000000000000000000000000000000000000000000000000000000000000878718166112f6576000611318565b7f80000000000000000000000000000000000000000000000000000000000000005b94505050505061076c565b9282019260007c0200000000000000000000000000000000000000000000000000000000831015611388577c01000000000000000000000000000000000000000000000000000000008310156113815761137c836123ba565b61138b565b60e061138b565b60e15b905061407081860110156113a657600094506000925061144a565b6140e081860110156113e9576140708510156113cb57846140700383901c92506113e0565b6140708511156113e057614070850383901b92505b6000945061144a565b61c0dd818601111561140357617fff94506000925061144a565b607081111561141a576070810383901c925061142d565b607081101561142d578060700383901b92505b6dffffffffffffffffffffffffffff831692506140df8186010394505b82607086901b888a186f8000000000000000000000000000000060801b1660801c6fffffffffffffffffffffffffffffffff16171760801b9550505050505061076c565b6000617fff60f084811c8216919084901c8116908290036114dd5780617fff0361118f57507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b80617fff03611564577dffffffffffffffffffffffffffff0000000000000000000000000000000084161561153757507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b5050508082187f80000000000000000000000000000000000000000000000000000000000000001661076c565b7f7fffffffffffffffffffffffffffffff000000000000000000000000000000008416600003611632577f7fffffffffffffffffffffffffffffff0000000000000000000000000000000085166000036115e357507f7fff800000000000000000000000000000000000000000000000000000000000915061076c9050565b5050508082187f8000000000000000000000000000000000000000000000000000000000000000167f7fff0000000000000000000000000000000000000000000000000000000000001761076c565b6dffffffffffffffffffffffffffff608085901c166000829003611659576001915061166b565b6e010000000000000000000000000000175b6dffffffffffffffffffffffffffff608087901c1660008490036116d35780156116ce57600061169a826123ba565b6001955060e2039384017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8e01939190911b90505b6116e8565b6e0100000000000000000000000000001760721b5b8181816116f7576116f761275d565b04905080600003611732577f8000000000000000000000000000000000000000000000000000000000000000878718166112f6576000611318565b6d10000000000000000000000000008110156117505761175061278c565b60006e0800000000000000000000000000008210156117b0576e0400000000000000000000000000008210156117a5576e02000000000000000000000000000082101561179e5760706117a8565b60716117a8565b60725b60ff166117b9565b6117b9826123ba565b9050836140710181860111156117d757617fff945060009150611871565b83818601613ffc0110156117f2576000945060009150611871565b83818601613f8c01101561183f578385613ffc01111561181d578385613ffc010382901b9150611836565b8385613ffc01101561183657613ffc8585030382901c91505b60009450611871565b6070811115611852576070810382901c91505b6dffffffffffffffffffffffffffff8216915083818601613f8d010394505b81607086901b888a186f8000000000000000000000000000000060801b1660801c6fffffffffffffffffffffffffffffffff16171760801b9550505050505061076c565b6000617fff60f084811c8216919084901c8116908290036119195780617fff0361190f577fffffffffffffffffffffffffffffffff000000000000000000000000000000008085169086160361110f57849250505061076c565b849250505061076c565b80617fff0361192c57839250505061076c565b6f80000000000000000000000000000000608086901c90811015906dffffffffffffffffffffffffffff166000849003611969576001935061197b565b6e010000000000000000000000000000175b6f80000000000000000000000000000000608087901c90811015906dffffffffffffffffffffffffffff1660008590036119b857600194506119ca565b6e010000000000000000000000000000175b82600003611a31577fffffffffffffffffffffffffffffffff0000000000000000000000000000000088167f800000000000000000000000000000000000000000000000000000000000000014611a215787611a24565b60005b965050505050505061076c565b80600003611a88577fffffffffffffffffffffffffffffffff0000000000000000000000000000000089167f800000000000000000000000000000000000000000000000000000000000000014611a215788611a24565b84860382151585151503611c14576070811315611aae578997505050505050505061076c565b6000811315611ac05790811c90611b0d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811215611af7578897505050505050505061076c565b6000811215611b0d578060000384901c93508596505b928101926e0200000000000000000000000000008410611b33576001968701969390931c925b86617fff03611b975784611b67577f7fff000000000000000000000000000000000000000000000000000000000000611b89565b7fffff0000000000000000000000000000000000000000000000000000000000005b97505050505050505061076c565b6e010000000000000000000000000000841015611bb75760009650611bcb565b6dffffffffffffffffffffffffffff841693505b83607088901b86611bdd576000611bef565b6f800000000000000000000000000000005b6fffffffffffffffffffffffffffffffff16171760801b97505050505050505061076c565b6000811315611c2f57600184901b9350600187039650611c46565b6000811215611c4657600182901b91506001860396505b6070811315611c585760019150611ce1565b6001811315611c75576001810360018303901c6001019150611ce1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811215611ca65760019350611ce1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811215611ce1576001816000030360018503901c60010193505b818410611cf2578184039350611cfb565b83820393508294505b83600003611d1457506000965061076c95505050505050565b6000611d1f856123ba565b905080607103611d4b57600185901c6dffffffffffffffffffffffffffff169450600188019750611dc6565b6070811015611db257607081900380891115611d81578086901b6dffffffffffffffffffffffffffff1695508089039850611dac565b6000987fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019590951b945b50611dc6565b6dffffffffffffffffffffffffffff851694505b87617fff03611e2b5785611dfa577f7fff000000000000000000000000000000000000000000000000000000000000611e1c565b7fffff0000000000000000000000000000000000000000000000000000000000005b9850505050505050505061076c565b84607089901b87611e3d576000611e4f565b6f800000000000000000000000000000005b6fffffffffffffffffffffffffffffffff16171760801b9850505050505050505061076c565b6000617fff60f083901c16613fff811015611e935750600092915050565b6f80000000000000000000000000000000608084901c10611eb357600080fd5b6140fe811115611ec257600080fd5b6e0100000000000000000000000000006dffffffffffffffffffffffffffff608085901c161761406f821015611efe5761406f8290031c611f2d565b61406f821115611f2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf9182011b5b9392505050565b6000611f817f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084610d03565b611fad7f0000000000000000000000000000000000000000000000000000000000000000333085610e7a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e9190612702565b6040517f2e17de78000000000000000000000000000000000000000000000000000000008152600481018590529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e17de7890602401600060405180830381600087803b1580156120e957600080fd5b505af11580156120fd573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691506370a0823190602401602060405180830381865afa15801561218e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b29190612702565b9050818111612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5661756c742050726f78793a206e6f2054656d706c652072656365697665642060448201527f7768656e20756e7374616b696e67000000000000000000000000000000000000606482015260840161043f565b61224d82826127bb565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c479084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610df8565b600061230d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661246a9092919063ffffffff16565b905080516000148061232e57508080602001905181019061232e91906127ce565b610c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161043f565b60008082116123c857600080fd5b600070010000000000000000000000000000000083106123ea57608092831c92015b68010000000000000000831061240257604092831c92015b640100000000831061241657602092831c92015b62010000831061242857601092831c92015b610100831061243957600892831c92015b6010831061244957600492831c92015b6004831061245957600292831c92015b6002831061076c5760010192915050565b606061224d8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161249e9190612814565b60006040518083038185875af1925050503d80600081146124db576040519150601f19603f3d011682016040523d82523d6000602084013e6124e0565b606091505b50915091506124f1878383876124fc565b979650505050505050565b6060831561259257825160000361258b5773ffffffffffffffffffffffffffffffffffffffff85163b61258b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161043f565b508161224d565b61224d83838151156125a75781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043f9190612830565b73ffffffffffffffffffffffffffffffffffffffff81168114610d0057600080fd5b6000806040838503121561261057600080fd5b823591506020830135612622816125db565b809150509250929050565b60008060006060848603121561264257600080fd5b8335925060208401356dffffffffffffffffffffffffffff8116811461266757600080fd5b91506040840135612677816125db565b809150509250925092565b6000806040838503121561269557600080fd5b50508035926020909101359150565b6000806000606084860312156126b957600080fd5b83356126c4816125db565b925060208401356126d4816125db565b929592945050506040919091013590565b6000602082840312156126f757600080fd5b8135611f2d816125db565b60006020828403121561271457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076c5761076c61271b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8181038181111561076c5761076c61271b565b6000602082840312156127e057600080fd5b81518015158114611f2d57600080fd5b60005b8381101561280b5781810151838201526020016127f3565b50506000910152565b600082516128268184602087016127f0565b9190910192915050565b602081526000825180602084015261284f8160408501602087016127f0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220bef2cd724911ab5e310ce59bfeb0036311cb71aca0ae383405b8e1bff8fd390664736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/core/VaultedTemple.sol/VaultedTemple.json b/apps/dapp/abi/contracts/core/VaultedTemple.sol/VaultedTemple.json new file mode 100644 index 000000000..39374c75b --- /dev/null +++ b/apps/dapp/abi/contracts/core/VaultedTemple.sol/VaultedTemple.json @@ -0,0 +1,146 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "VaultedTemple", + "sourceName": "contracts/core/VaultedTemple.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_templeToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_templeExposure", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeExposure", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "toAccount", + "type": "address" + } + ], + "name": "toTemple", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561001057600080fd5b50604051610c24380380610c2483398101604081905261002f916100b7565b6100383361004f565b6001600160a01b039182166080521660a0526100f1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100b457600080fd5b50565b600080604083850312156100ca57600080fd5b82516100d58161009f565b60208401519092506100e68161009f565b809150509250929050565b60805160a051610b016101236000396000818160a40152610172015260008181610112015261024f0152610b016000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ef578063b1a9069c1461010d578063d9caed1214610134578063f2fde38b1461014757600080fd5b80634d4c23a814610082578063715018a6146100975780638bc1437b1461009f575b600080fd5b61009561009036600461098e565b61015a565b005b610095610279565b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff166100c6565b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b6100956101423660046109ba565b61028d565b6100956101553660046109f6565b61040d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461024a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f5661756c74656454656d706c653a204f6e6c792054656d70654578706f73757260448201527f652063616e2072656465656d2074656d706c65206f6e20626568616c66206f6660648201527f2061207661756c74000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6102757f000000000000000000000000000000000000000000000000000000000000000082846104c4565b5050565b610281610551565b61028b60006105d2565b565b610295610551565b73ffffffffffffffffffffffffffffffffffffffff8216610312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f746f2061646472657373207a65726f00000000000000000000000000000000006044820152606401610241565b73ffffffffffffffffffffffffffffffffffffffff83166103fd5760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610387576040519150601f19603f3d011682016040523d82523d6000602084013e61038c565b606091505b50509050806103f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f73656e64206661696c65640000000000000000000000000000000000000000006044820152606401610241565b50505050565b6104088383836104c4565b505050565b610415610551565b73ffffffffffffffffffffffffffffffffffffffff81166104b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610241565b6104c1816105d2565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610408908490610647565b60005473ffffffffffffffffffffffffffffffffffffffff16331461028b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610241565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006106a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107569092919063ffffffff16565b90508051600014806106ca5750808060200190518101906106ca9190610a18565b610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610241565b6060610765848460008561076d565b949350505050565b6060824710156107ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610241565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108289190610a5e565b60006040518083038185875af1925050503d8060008114610865576040519150601f19603f3d011682016040523d82523d6000602084013e61086a565b606091505b509150915061087b87838387610886565b979650505050505050565b6060831561091c5782516000036109155773ffffffffffffffffffffffffffffffffffffffff85163b610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610241565b5081610765565b61076583838151156109315781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102419190610a7a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461098957600080fd5b919050565b600080604083850312156109a157600080fd5b823591506109b160208401610965565b90509250929050565b6000806000606084860312156109cf57600080fd5b6109d884610965565b92506109e660208501610965565b9150604084013590509250925092565b600060208284031215610a0857600080fd5b610a1182610965565b9392505050565b600060208284031215610a2a57600080fd5b81518015158114610a1157600080fd5b60005b83811015610a55578181015183820152602001610a3d565b50506000910152565b60008251610a70818460208701610a3a565b9190910192915050565b6020815260008251806020840152610a99816040850160208701610a3a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220b06e848b9e2080bdb3d2b184aef6034154a8503d1dc3c18c25a9840294992ab464736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ef578063b1a9069c1461010d578063d9caed1214610134578063f2fde38b1461014757600080fd5b80634d4c23a814610082578063715018a6146100975780638bc1437b1461009f575b600080fd5b61009561009036600461098e565b61015a565b005b610095610279565b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff166100c6565b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b6100956101423660046109ba565b61028d565b6100956101553660046109f6565b61040d565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461024a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f5661756c74656454656d706c653a204f6e6c792054656d70654578706f73757260448201527f652063616e2072656465656d2074656d706c65206f6e20626568616c66206f6660648201527f2061207661756c74000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6102757f000000000000000000000000000000000000000000000000000000000000000082846104c4565b5050565b610281610551565b61028b60006105d2565b565b610295610551565b73ffffffffffffffffffffffffffffffffffffffff8216610312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f746f2061646472657373207a65726f00000000000000000000000000000000006044820152606401610241565b73ffffffffffffffffffffffffffffffffffffffff83166103fd5760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610387576040519150601f19603f3d011682016040523d82523d6000602084013e61038c565b606091505b50509050806103f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f73656e64206661696c65640000000000000000000000000000000000000000006044820152606401610241565b50505050565b6104088383836104c4565b505050565b610415610551565b73ffffffffffffffffffffffffffffffffffffffff81166104b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610241565b6104c1816105d2565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610408908490610647565b60005473ffffffffffffffffffffffffffffffffffffffff16331461028b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610241565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006106a9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107569092919063ffffffff16565b90508051600014806106ca5750808060200190518101906106ca9190610a18565b610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610241565b6060610765848460008561076d565b949350505050565b6060824710156107ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610241565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108289190610a5e565b60006040518083038185875af1925050503d8060008114610865576040519150601f19603f3d011682016040523d82523d6000602084013e61086a565b606091505b509150915061087b87838387610886565b979650505050505050565b6060831561091c5782516000036109155773ffffffffffffffffffffffffffffffffffffffff85163b610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610241565b5081610765565b61076583838151156109315781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102419190610a7a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461098957600080fd5b919050565b600080604083850312156109a157600080fd5b823591506109b160208401610965565b90509250929050565b6000806000606084860312156109cf57600080fd5b6109d884610965565b92506109e660208501610965565b9150604084013590509250925092565b600060208284031215610a0857600080fd5b610a1182610965565b9392505050565b600060208284031215610a2a57600080fd5b81518015158114610a1157600080fd5b60005b83811015610a55578181015183820152602001610a3d565b50506000910152565b60008251610a70818460208701610a3a565b9190910192915050565b6020815260008251806020840152610a99816040850160208701610a3a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220b06e848b9e2080bdb3d2b184aef6034154a8503d1dc3c18c25a9840294992ab464736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/deprecated/Faith.sol/Faith.json b/apps/dapp/abi/contracts/deprecated/Faith.sol/Faith.json new file mode 100644 index 000000000..358b8b837 --- /dev/null +++ b/apps/dapp/abi/contracts/deprecated/Faith.sol/Faith.json @@ -0,0 +1,205 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Faith", + "sourceName": "contracts/deprecated/Faith.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Gain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Loose", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balances", + "outputs": [ + { + "internalType": "uint112", + "name": "lifeTimeFaith", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "usableFaith", + "type": "uint112" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint112", + "name": "amount", + "type": "uint112" + } + ], + "name": "gain", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint112", + "name": "amount", + "type": "uint112" + } + ], + "name": "redeem", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061001a336100c9565b60016003600082825461002d919061012f565b9091555050306000908152600160208190526040822080549192909161005d9084906001600160701b0316610148565b82546101009290920a6001600160701b0381810219909316918316021790915530600090815260016020819052604082208054919450926100a091859116610148565b92506101000a8154816001600160701b0302191690836001600160701b0316021790555061016f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561014257610142610119565b92915050565b6001600160701b0381811683821601908082111561016857610168610119565b5092915050565b6109e78061017e6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806364a3bc57116100765780638da5cb5b1161005b5780638da5cb5b14610174578063ac18de431461019c578063f2fde38b146101af57600080fd5b806364a3bc5714610159578063715018a61461016c57600080fd5b806318160ddd146100a857806327e235e3146100c45780632d06177a146101315780633a847cb214610146575b600080fd5b6100b160035481565b6040519081526020015b60405180910390f35b61010a6100d23660046108bc565b6001602052600090815260409020546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041682565b604080516dffffffffffffffffffffffffffff9384168152929091166020830152016100bb565b61014461013f3660046108bc565b6101c2565b005b6101446101543660046108de565b610219565b6101446101673660046108de565b61045a565b61014461067e565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bb565b6101446101aa3660046108bc565b610692565b6101446101bd3660046108bc565b6106e6565b6101ca61079d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3360009081526002602052604090205460ff1615156001146102c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f46616974683a2063616c6c65722063616e6e6f74206d616e616765206661697460448201527f680000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546dffffffffffffffffffffffffffff6e0100000000000000000000000000009091048116908216811015610378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4275726e206578636565647320616c6c6f77616e63650000000000000000000060448201526064016102b9565b816dffffffffffffffffffffffffffff166003600082825461039a9190610957565b909155505073ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260409182902080547fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff81166e010000000000000000000000000000918290046dffffffffffffffffffffffffffff90811689900381169092021790915582519384528516908301527fe055ae8faf25eafc77d79a58434a4a72a90571abf61e48a8e051d62547f783a5910160405180910390a1505050565b3360009081526002602052604090205460ff1615156001146104fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f46616974683a2063616c6c65722063616e6e6f74206d616e616765206661697460448201527f680000000000000000000000000000000000000000000000000000000000000060648201526084016102b9565b806dffffffffffffffffffffffffffff16600360008282546105209190610970565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260408120805483929061056a9084906dffffffffffffffffffffffffffff16610983565b82546101009290920a6dffffffffffffffffffffffffffff81810219909316918316021790915573ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040902080548493509091600e916105de9185916e010000000000000000000000000000900416610983565b92506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055507fd2ff26b9fa2e246942febada60f642d2d8338bd3c40ca9f3e65d01a24eb57009828260405161067292919073ffffffffffffffffffffffffffffffffffffffff9290921682526dffffffffffffffffffffffffffff16602082015260400190565b60405180910390a15050565b61068661079d565b610690600061081e565b565b61069a61079d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6106ee61079d565b73ffffffffffffffffffffffffffffffffffffffff8116610791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102b9565b61079a8161081e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b9565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108b757600080fd5b919050565b6000602082840312156108ce57600080fd5b6108d782610893565b9392505050565b600080604083850312156108f157600080fd5b6108fa83610893565b915060208301356dffffffffffffffffffffffffffff8116811461091d57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561096a5761096a610928565b92915050565b8082018082111561096a5761096a610928565b6dffffffffffffffffffffffffffff8181168382160190808211156109aa576109aa610928565b509291505056fea2646970667358221220a77efbd0f36e4aff7195225518acaaa6a047be6917772f8c1b6191a89d990d1864736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c806364a3bc57116100765780638da5cb5b1161005b5780638da5cb5b14610174578063ac18de431461019c578063f2fde38b146101af57600080fd5b806364a3bc5714610159578063715018a61461016c57600080fd5b806318160ddd146100a857806327e235e3146100c45780632d06177a146101315780633a847cb214610146575b600080fd5b6100b160035481565b6040519081526020015b60405180910390f35b61010a6100d23660046108bc565b6001602052600090815260409020546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041682565b604080516dffffffffffffffffffffffffffff9384168152929091166020830152016100bb565b61014461013f3660046108bc565b6101c2565b005b6101446101543660046108de565b610219565b6101446101673660046108de565b61045a565b61014461067e565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bb565b6101446101aa3660046108bc565b610692565b6101446101bd3660046108bc565b6106e6565b6101ca61079d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3360009081526002602052604090205460ff1615156001146102c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f46616974683a2063616c6c65722063616e6e6f74206d616e616765206661697460448201527f680000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546dffffffffffffffffffffffffffff6e0100000000000000000000000000009091048116908216811015610378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4275726e206578636565647320616c6c6f77616e63650000000000000000000060448201526064016102b9565b816dffffffffffffffffffffffffffff166003600082825461039a9190610957565b909155505073ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260409182902080547fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff81166e010000000000000000000000000000918290046dffffffffffffffffffffffffffff90811689900381169092021790915582519384528516908301527fe055ae8faf25eafc77d79a58434a4a72a90571abf61e48a8e051d62547f783a5910160405180910390a1505050565b3360009081526002602052604090205460ff1615156001146104fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f46616974683a2063616c6c65722063616e6e6f74206d616e616765206661697460448201527f680000000000000000000000000000000000000000000000000000000000000060648201526084016102b9565b806dffffffffffffffffffffffffffff16600360008282546105209190610970565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260408120805483929061056a9084906dffffffffffffffffffffffffffff16610983565b82546101009290920a6dffffffffffffffffffffffffffff81810219909316918316021790915573ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040902080548493509091600e916105de9185916e010000000000000000000000000000900416610983565b92506101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055507fd2ff26b9fa2e246942febada60f642d2d8338bd3c40ca9f3e65d01a24eb57009828260405161067292919073ffffffffffffffffffffffffffffffffffffffff9290921682526dffffffffffffffffffffffffffff16602082015260400190565b60405180910390a15050565b61068661079d565b610690600061081e565b565b61069a61079d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6106ee61079d565b73ffffffffffffffffffffffffffffffffffffffff8116610791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102b9565b61079a8161081e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b9565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108b757600080fd5b919050565b6000602082840312156108ce57600080fd5b6108d782610893565b9392505050565b600080604083850312156108f157600080fd5b6108fa83610893565b915060208301356dffffffffffffffffffffffffffff8116811461091d57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561096a5761096a610928565b92915050565b8082018082111561096a5761096a610928565b6dffffffffffffffffffffffffffff8181168382160190808211156109aa576109aa610928565b509291505056fea2646970667358221220a77efbd0f36e4aff7195225518acaaa6a047be6917772f8c1b6191a89d990d1864736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/deprecated/IExitQueue.sol/IExitQueue.json b/apps/dapp/abi/contracts/deprecated/IExitQueue.sol/IExitQueue.json new file mode 100644 index 000000000..824eae31d --- /dev/null +++ b/apps/dapp/abi/contracts/deprecated/IExitQueue.sol/IExitQueue.json @@ -0,0 +1,29 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IExitQueue", + "sourceName": "contracts/deprecated/IExitQueue.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_exiter", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "join", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/deprecated/InstantExitQueue.sol/InstantExitQueue.json b/apps/dapp/abi/contracts/deprecated/InstantExitQueue.sol/InstantExitQueue.json new file mode 100644 index 000000000..e1f920beb --- /dev/null +++ b/apps/dapp/abi/contracts/deprecated/InstantExitQueue.sol/InstantExitQueue.json @@ -0,0 +1,45 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "InstantExitQueue", + "sourceName": "contracts/deprecated/InstantExitQueue.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract TempleStaking", + "name": "_templeStaking", + "type": "address" + }, + { + "internalType": "contract TempleERC20Token", + "name": "_templeToken", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_exiter", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "join", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516106a83803806106a883398101604081905261002f91610078565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100b2565b6001600160a01b038116811461007557600080fd5b50565b6000806040838503121561008b57600080fd5b825161009681610060565b60208401519092506100a781610060565b809150509250929050565b6105e7806100c16000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633b4da69f14610030575b600080fd5b61004361003e3660046104b2565b610045565b005b60005473ffffffffffffffffffffffffffffffffffffffff1633146100cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6f6e6c79207374616b696e6720636f6e7472616374000000000000000000000060448201526064015b60405180910390fd5b6001546100f09073ffffffffffffffffffffffffffffffffffffffff163384846100f4565b5050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261018990859061018f565b50505050565b60006101f1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166102a39092919063ffffffff16565b905080516000148061021257508080602001905181019061021291906104f7565b61029e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016100c2565b505050565b60606102b284846000856102ba565b949350505050565b60608247101561034c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016100c2565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516103759190610544565b60006040518083038185875af1925050503d80600081146103b2576040519150601f19603f3d011682016040523d82523d6000602084013e6103b7565b606091505b50915091506103c8878383876103d3565b979650505050505050565b606083156104695782516000036104625773ffffffffffffffffffffffffffffffffffffffff85163b610462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100c2565b50816102b2565b6102b2838381511561047e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100c29190610560565b600080604083850312156104c557600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104e957600080fd5b946020939093013593505050565b60006020828403121561050957600080fd5b8151801515811461051957600080fd5b9392505050565b60005b8381101561053b578181015183820152602001610523565b50506000910152565b60008251610556818460208701610520565b9190910192915050565b602081526000825180602084015261057f816040850160208701610520565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122076cc47f5d82f83a3d201318be9a924f2ac45a512fca6ead9db733e84553d6f3864736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80633b4da69f14610030575b600080fd5b61004361003e3660046104b2565b610045565b005b60005473ffffffffffffffffffffffffffffffffffffffff1633146100cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6f6e6c79207374616b696e6720636f6e7472616374000000000000000000000060448201526064015b60405180910390fd5b6001546100f09073ffffffffffffffffffffffffffffffffffffffff163384846100f4565b5050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261018990859061018f565b50505050565b60006101f1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166102a39092919063ffffffff16565b905080516000148061021257508080602001905181019061021291906104f7565b61029e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016100c2565b505050565b60606102b284846000856102ba565b949350505050565b60608247101561034c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016100c2565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516103759190610544565b60006040518083038185875af1925050503d80600081146103b2576040519150601f19603f3d011682016040523d82523d6000602084013e6103b7565b606091505b50915091506103c8878383876103d3565b979650505050505050565b606083156104695782516000036104625773ffffffffffffffffffffffffffffffffffffffff85163b610462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100c2565b50816102b2565b6102b2838381511561047e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100c29190610560565b600080604083850312156104c557600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104e957600080fd5b946020939093013593505050565b60006020828403121561050957600080fd5b8151801515811461051957600080fd5b9392505050565b60005b8381101561053b578181015183820152602001610523565b50506000910152565b60008251610556818460208701610520565b9190910192915050565b602081526000825180602084015261057f816040850160208701610520565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122076cc47f5d82f83a3d201318be9a924f2ac45a512fca6ead9db733e84553d6f3864736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/deprecated/LockedOGTemple.sol/LockedOGTemple.json b/apps/dapp/abi/contracts/deprecated/LockedOGTemple.sol/LockedOGTemple.json new file mode 100644 index 000000000..7e6c9a8f3 --- /dev/null +++ b/apps/dapp/abi/contracts/deprecated/LockedOGTemple.sol/LockedOGTemple.json @@ -0,0 +1,199 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LockedOGTemple", + "sourceName": "contracts/deprecated/LockedOGTemple.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract OGTemple", + "name": "_OG_TEMPLE", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_staker", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_lockedUntil", + "type": "uint256" + } + ], + "name": "OGTempleLocked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_staker", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "OGTempleWithdraw", + "type": "event" + }, + { + "inputs": [], + "name": "OG_TEMPLE", + "outputs": [ + { + "internalType": "contract OGTemple", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountOGTemple", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockedUntilTimestamp", + "type": "uint256" + } + ], + "name": "lock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_staker", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountOGTemple", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lockedUntilTimestamp", + "type": "uint256" + } + ], + "name": "lockFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "locked", + "outputs": [ + { + "internalType": "uint256", + "name": "BalanceOGTemple", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "LockedUntilTimestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_staker", + "type": "address" + } + ], + "name": "numLocks", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_idx", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_staker", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_idx", + "type": "uint256" + } + ], + "name": "withdrawFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610cae380380610cae83398101604081905261002f91610054565b600180546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610c1b806100936000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f1284aa1161005b5780638f1284aa146100bd578063b9ef083014610107578063bf7bab731461014b578063db518db21461017357600080fd5b80631338736f146100825780632e1a7d4d1461009757806383e25f8a146100aa575b600080fd5b6100956100903660046109b1565b610186565b005b6100956100a53660046109d3565b610195565b6100956100b8366004610a15565b6101a2565b6001546100dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61013d610115366004610a48565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6040519081526020016100fe565b61015e610159366004610a6a565b61026c565b604080519283526020830191909152016100fe565b610095610181366004610a6a565b6102a8565b6101913383836101a2565b5050565b61019f33826102a8565b50565b604080518082018252838152602080820184815273ffffffffffffffffffffffffffffffffffffffff80881660009081528084529485208054600181810183559187529390952084516002909402019283559051918401919091559154909161020e9116333086610556565b6040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018590529081018390527faeba50e43ba4efe965d916ca4acb966022f5da3097e03c782578df36df61c59d906060015b60405180910390a150505050565b6000602052816000526040600020818154811061028857600080fd5b600091825260209091206002909102018054600190910154909250905082565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902080548210610361576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6f206c6f636b20656e7472792061742074686520737065636966696564206960448201527f6e6465780000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b4281838154811061037457610374610a94565b906000526020600020906002020160010154106103ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53706563696669656420656e747279206973207374696c6c206c6f636b6564006044820152606401610358565b600081838154811061040157610401610a94565b906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050905081600183805490506104429190610ac3565b8154811061045257610452610a94565b906000526020600020906002020182848154811061047257610472610a94565b60009182526020909120825460029092020190815560019182015491015581548290806104a1576104a1610b03565b60008281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020181815560019081019190915591555481516105079173ffffffffffffffffffffffffffffffffffffffff16908690610638565b80516040805173ffffffffffffffffffffffffffffffffffffffff8716815260208101929092527f0c2301a118e6f0843fbd110920bbe9b409fc9330867e8b9c4f4637a7633ada83910161025e565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526106329085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610693565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261068e9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016105b0565b505050565b60006106f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107a29092919063ffffffff16565b90508051600014806107165750808060200190518101906107169190610b32565b61068e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610358565b60606107b184846000856107b9565b949350505050565b60608247101561084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610358565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108749190610b78565b60006040518083038185875af1925050503d80600081146108b1576040519150601f19603f3d011682016040523d82523d6000602084013e6108b6565b606091505b50915091506108c7878383876108d2565b979650505050505050565b606083156109685782516000036109615773ffffffffffffffffffffffffffffffffffffffff85163b610961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610358565b50816107b1565b6107b1838381511561097d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103589190610b94565b600080604083850312156109c457600080fd5b50508035926020909101359150565b6000602082840312156109e557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a1057600080fd5b919050565b600080600060608486031215610a2a57600080fd5b610a33846109ec565b95602085013595506040909401359392505050565b600060208284031215610a5a57600080fd5b610a63826109ec565b9392505050565b60008060408385031215610a7d57600080fd5b610a86836109ec565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115610afd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600060208284031215610b4457600080fd5b81518015158114610a6357600080fd5b60005b83811015610b6f578181015183820152602001610b57565b50506000910152565b60008251610b8a818460208701610b54565b9190910192915050565b6020815260008251806020840152610bb3816040850160208701610b54565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212203bd39220fdb40f8b0c520fd34800ed2ce70238aeedb477076ee28628f6000e2264736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f1284aa1161005b5780638f1284aa146100bd578063b9ef083014610107578063bf7bab731461014b578063db518db21461017357600080fd5b80631338736f146100825780632e1a7d4d1461009757806383e25f8a146100aa575b600080fd5b6100956100903660046109b1565b610186565b005b6100956100a53660046109d3565b610195565b6100956100b8366004610a15565b6101a2565b6001546100dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61013d610115366004610a48565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6040519081526020016100fe565b61015e610159366004610a6a565b61026c565b604080519283526020830191909152016100fe565b610095610181366004610a6a565b6102a8565b6101913383836101a2565b5050565b61019f33826102a8565b50565b604080518082018252838152602080820184815273ffffffffffffffffffffffffffffffffffffffff80881660009081528084529485208054600181810183559187529390952084516002909402019283559051918401919091559154909161020e9116333086610556565b6040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018590529081018390527faeba50e43ba4efe965d916ca4acb966022f5da3097e03c782578df36df61c59d906060015b60405180910390a150505050565b6000602052816000526040600020818154811061028857600080fd5b600091825260209091206002909102018054600190910154909250905082565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902080548210610361576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6f206c6f636b20656e7472792061742074686520737065636966696564206960448201527f6e6465780000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b4281838154811061037457610374610a94565b906000526020600020906002020160010154106103ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f53706563696669656420656e747279206973207374696c6c206c6f636b6564006044820152606401610358565b600081838154811061040157610401610a94565b906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050905081600183805490506104429190610ac3565b8154811061045257610452610a94565b906000526020600020906002020182848154811061047257610472610a94565b60009182526020909120825460029092020190815560019182015491015581548290806104a1576104a1610b03565b60008281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020181815560019081019190915591555481516105079173ffffffffffffffffffffffffffffffffffffffff16908690610638565b80516040805173ffffffffffffffffffffffffffffffffffffffff8716815260208101929092527f0c2301a118e6f0843fbd110920bbe9b409fc9330867e8b9c4f4637a7633ada83910161025e565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526106329085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610693565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261068e9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016105b0565b505050565b60006106f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107a29092919063ffffffff16565b90508051600014806107165750808060200190518101906107169190610b32565b61068e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610358565b60606107b184846000856107b9565b949350505050565b60608247101561084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610358565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108749190610b78565b60006040518083038185875af1925050503d80600081146108b1576040519150601f19603f3d011682016040523d82523d6000602084013e6108b6565b606091505b50915091506108c7878383876108d2565b979650505050505050565b606083156109685782516000036109615773ffffffffffffffffffffffffffffffffffffffff85163b610961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610358565b50816107b1565b6107b1838381511561097d5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103589190610b94565b600080604083850312156109c457600080fd5b50508035926020909101359150565b6000602082840312156109e557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a1057600080fd5b919050565b600080600060608486031215610a2a57600080fd5b610a33846109ec565b95602085013595506040909401359392505050565b600060208284031215610a5a57600080fd5b610a63826109ec565b9392505050565b60008060408385031215610a7d57600080fd5b610a86836109ec565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115610afd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600060208284031215610b4457600080fd5b81518015158114610a6357600080fd5b60005b83811015610b6f578181015183820152602001610b57565b50506000910152565b60008251610b8a818460208701610b54565b9190910192915050565b6020815260008251806020840152610bb3816040850160208701610b54565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212203bd39220fdb40f8b0c520fd34800ed2ce70238aeedb477076ee28628f6000e2264736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/deprecated/OGTemple.sol/OGTemple.json b/apps/dapp/abi/contracts/deprecated/OGTemple.sol/OGTemple.json new file mode 100644 index 000000000..5ab2734b2 --- /dev/null +++ b/apps/dapp/abi/contracts/deprecated/OGTemple.sol/OGTemple.json @@ -0,0 +1,387 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OGTemple", + "sourceName": "contracts/deprecated/OGTemple.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051806040016040528060088152602001674f4754656d706c6560c01b815250604051806040016040528060098152602001684f475f54454d504c4560b81b815250816003908162000066919062000193565b50600462000075828262000193565b505050620000926200008c6200009860201b60201c565b6200009c565b6200025f565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011957607f821691505b6020821081036200013a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200018e57600081815260208120601f850160051c81016020861015620001695750805b601f850160051c820191505b818110156200018a5782815560010162000175565b5050505b505050565b81516001600160401b03811115620001af57620001af620000ee565b620001c781620001c0845462000104565b8462000140565b602080601f831160018114620001ff5760008415620001e65750858301515b600019600386901b1c1916600185901b1785556200018a565b600085815260208120601f198616915b8281101562000230578886015182559484019460019091019084016200020f565b50858210156200024f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6110ac806200026f6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb14610264578063dd62ed3e14610277578063f2fde38b146102bd57600080fd5b806395d89b4114610249578063a457c2d71461025157600080fd5b806370a08231146101d0578063715018a61461020657806379cc67901461020e5780638da5cb5b1461022157600080fd5b8063313ce567116100ee578063313ce56714610186578063395093511461019557806340c10f19146101a857806342966c68146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b6101286102d0565b6040516101359190610e80565b60405180910390f35b61015161014c366004610f15565b610362565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610f3f565b61037c565b60405160128152602001610135565b6101516101a3366004610f15565b6103a0565b6101bb6101b6366004610f15565b6103ec565b005b6101bb6101cb366004610f7b565b610402565b6101656101de366004610f94565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101bb61040f565b6101bb61021c366004610f15565b610423565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610128610438565b61015161025f366004610f15565b610447565b610151610272366004610f15565b61051d565b610165610285366004610fb6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101bb6102cb366004610f94565b61052b565b6060600380546102df90610fe9565b80601f016020809104026020016040519081016040528092919081815260200182805461030b90610fe9565b80156103585780601f1061032d57610100808354040283529160200191610358565b820191906000526020600020905b81548152906001019060200180831161033b57829003601f168201915b5050505050905090565b6000336103708185856105df565b60019150505b92915050565b60003361038a858285610793565b61039585858561086a565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061037090829086906103e790879061103c565b6105df565b6103f4610ad9565b6103fe8282610b5a565b5050565b61040c3382610c4d565b50565b610417610ad9565b6104216000610e09565b565b61042e823383610793565b6103fe8282610c4d565b6060600480546102df90610fe9565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61039582868684036105df565b60003361037081858561086a565b610533610ad9565b73ffffffffffffffffffffffffffffffffffffffff81166105d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610507565b61040c81610e09565b73ffffffffffffffffffffffffffffffffffffffff8316610681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108645781811015610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610507565b61086484848484036105df565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661090d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff82166109b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610a66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610864565b60055473ffffffffffffffffffffffffffffffffffffffff163314610421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610507565b8060026000828254610be9919061103c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610786565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610ead57858101830151858201604001528201610e91565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f1057600080fd5b919050565b60008060408385031215610f2857600080fd5b610f3183610eec565b946020939093013593505050565b600080600060608486031215610f5457600080fd5b610f5d84610eec565b9250610f6b60208501610eec565b9150604084013590509250925092565b600060208284031215610f8d57600080fd5b5035919050565b600060208284031215610fa657600080fd5b610faf82610eec565b9392505050565b60008060408385031215610fc957600080fd5b610fd283610eec565b9150610fe060208401610eec565b90509250929050565b600181811c90821680610ffd57607f821691505b602082108103611036577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80820180821115610376577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212203ebedec018f84ed631d77fa2b377c85b420590ada84e2b78bccf15f23a36ed7164736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb14610264578063dd62ed3e14610277578063f2fde38b146102bd57600080fd5b806395d89b4114610249578063a457c2d71461025157600080fd5b806370a08231146101d0578063715018a61461020657806379cc67901461020e5780638da5cb5b1461022157600080fd5b8063313ce567116100ee578063313ce56714610186578063395093511461019557806340c10f19146101a857806342966c68146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b6101286102d0565b6040516101359190610e80565b60405180910390f35b61015161014c366004610f15565b610362565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610f3f565b61037c565b60405160128152602001610135565b6101516101a3366004610f15565b6103a0565b6101bb6101b6366004610f15565b6103ec565b005b6101bb6101cb366004610f7b565b610402565b6101656101de366004610f94565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101bb61040f565b6101bb61021c366004610f15565b610423565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610128610438565b61015161025f366004610f15565b610447565b610151610272366004610f15565b61051d565b610165610285366004610fb6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101bb6102cb366004610f94565b61052b565b6060600380546102df90610fe9565b80601f016020809104026020016040519081016040528092919081815260200182805461030b90610fe9565b80156103585780601f1061032d57610100808354040283529160200191610358565b820191906000526020600020905b81548152906001019060200180831161033b57829003601f168201915b5050505050905090565b6000336103708185856105df565b60019150505b92915050565b60003361038a858285610793565b61039585858561086a565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061037090829086906103e790879061103c565b6105df565b6103f4610ad9565b6103fe8282610b5a565b5050565b61040c3382610c4d565b50565b610417610ad9565b6104216000610e09565b565b61042e823383610793565b6103fe8282610c4d565b6060600480546102df90610fe9565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61039582868684036105df565b60003361037081858561086a565b610533610ad9565b73ffffffffffffffffffffffffffffffffffffffff81166105d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610507565b61040c81610e09565b73ffffffffffffffffffffffffffffffffffffffff8316610681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108645781811015610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610507565b61086484848484036105df565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661090d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff82166109b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610a66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610864565b60055473ffffffffffffffffffffffffffffffffffffffff163314610421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610507565b8060026000828254610be9919061103c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610786565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610ead57858101830151858201604001528201610e91565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f1057600080fd5b919050565b60008060408385031215610f2857600080fd5b610f3183610eec565b946020939093013593505050565b600080600060608486031215610f5457600080fd5b610f5d84610eec565b9250610f6b60208501610eec565b9150604084013590509250925092565b600060208284031215610f8d57600080fd5b5035919050565b600060208284031215610fa657600080fd5b610faf82610eec565b9392505050565b60008060408385031215610fc957600080fd5b610fd283610eec565b9150610fe060208401610eec565b90509250929050565b600181811c90821680610ffd57607f821691505b602082108103611036577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80820180821115610376577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212203ebedec018f84ed631d77fa2b377c85b420590ada84e2b78bccf15f23a36ed7164736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/deprecated/TempleStaking.sol/TempleStaking.json b/apps/dapp/abi/contracts/deprecated/TempleStaking.sol/TempleStaking.json new file mode 100644 index 000000000..c28afc787 --- /dev/null +++ b/apps/dapp/abi/contracts/deprecated/TempleStaking.sol/TempleStaking.json @@ -0,0 +1,419 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleStaking", + "sourceName": "contracts/deprecated/TempleStaking.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_TEMPLE", + "type": "address" + }, + { + "internalType": "contract IExitQueue", + "name": "_EXIT_QUEUE", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_epochSizeSeconds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_startTimestamp", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_epochsProcessed", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_currentEpoch", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_accumulationFactor", + "type": "uint256" + } + ], + "name": "AccumulationFactorUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_staker", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_lockedUntil", + "type": "uint256" + } + ], + "name": "StakeCompleted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_staker", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "UnstakeCompleted", + "type": "event" + }, + { + "inputs": [], + "name": "EXIT_QUEUE", + "outputs": [ + { + "internalType": "contract IExitQueue", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OG_TEMPLE", + "outputs": [ + { + "internalType": "contract OGTemple", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TEMPLE", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "accumulationFactor", + "outputs": [ + { + "internalType": "int128", + "name": "", + "type": "int128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOgTemple", + "type": "uint256" + } + ], + "name": "balance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "epochSizeSeconds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "epy", + "outputs": [ + { + "internalType": "int128", + "name": "", + "type": "int128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_scale", + "type": "uint256" + } + ], + "name": "getAccumulationFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_scale", + "type": "uint256" + } + ], + "name": "getEpy", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastUpdatedEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_numerator", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_denominator", + "type": "uint256" + } + ], + "name": "setEpy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IExitQueue", + "name": "_EXIT_QUEUE", + "type": "address" + } + ], + "name": "setExitQueue", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountTemple", + "type": "uint256" + } + ], + "name": "stake", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOgTemple", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_staker", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountTemple", + "type": "uint256" + } + ], + "name": "stakeFor", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOgTemple", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "startTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amountOgTemple", + "type": "uint256" + } + ], + "name": "unstake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b506040516200315a3803806200315a833981016040819052620000349162000284565b6200003f33620001ef565b428110620000a05760405162461bcd60e51b815260206004820152602360248201527f53746172742074696d657374616d70206d75737420626520696e207468652070604482015262185cdd60ea1b60648201526084015b60405180910390fd5b620000af6202a30042620002d1565b8111620001255760405162461bcd60e51b815260206004820152603560248201527f53746172742074696d657374616d702063616e2774206265206d6f726520746860448201527f616e2032206461797320696e2074686520706173740000000000000000000000606482015260840162000097565b6001600160a01b03848116608052600180546001600160a01b03191691851691909117905560405162000158906200025d565b604051809103906000f08015801562000175573d6000803e3d6000fd5b506001600160a01b031660a052600382905560048190556200019860016200023f565b600280546001600160801b0319166001600160801b0392909216919091179055620001c460016200023f565b600580546001600160801b0319166001600160801b039290921691909117905550620002f992505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060016001603f1b038211156200025657600080fd5b5060401b90565b61131b8062001e3f83390190565b6001600160a01b03811681146200028157600080fd5b50565b600080600080608085870312156200029b57600080fd5b8451620002a8816200026b565b6020860151909450620002bb816200026b565b6040860151606090960151949790965092505050565b81810381811115620002f357634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a051611afd620003426000396000818161028701528181610370015281816104ce01526107680152600081816101f70152818161054701526106f50152611afd6000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80638da5cb5b116100cd578063cf98400d11610081578063e6fd48bc11610066578063e6fd48bc1461030b578063ed3b970414610314578063f2fde38b1461032757600080fd5b8063cf98400d146102d8578063d3e06b5e146102eb57600080fd5b8063a694fc3a116100b2578063a694fc3a146102a9578063a9f53dac146102bc578063b7642a43146102cf57600080fd5b80638da5cb5b146102645780638f1284aa1461028257600080fd5b806350e23d0011610124578063715018a611610109578063715018a61461024b57806376671808146102535780637ca076d71461025b57600080fd5b806350e23d00146101f257806359167e481461023e57600080fd5b80633740d556116101555780633740d556146101ac578063386dea67146101cc57806347bb89f0146101df57600080fd5b80632e17de78146101715780632ee4090814610186575b600080fd5b61018461017f366004611850565b61033a565b005b61019961019436600461188b565b61064d565b6040519081526020015b60405180910390f35b6005546101b990600f0b81565b604051600f9190910b81526020016101a3565b6101846101da3660046118b7565b610822565b6101996101ed366004611850565b610871565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a3565b6002546101b990600f0b81565b6101846108a4565b6101996108b8565b61019960035481565b60005473ffffffffffffffffffffffffffffffffffffffff16610219565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b6101996102b7366004611850565b6108da565b6101846102ca3660046118d4565b6108e6565b61019960065481565b6101996102e6366004611850565b61095b565b6001546102199073ffffffffffffffffffffffffffffffffffffffff1681565b61019960045481565b610199610322366004611850565b61098f565b6101846103353660046118b7565b6109b9565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015281907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063dd62ed3e90604401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906118f6565b1015610483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f496e73756666696369656e74204f4754656d706c6520616c6c6f77616e63652e60448201527f2043616e6e6f7420756e7374616b65000000000000000000000000000000000060648201526084015b60405180910390fd5b61048b610a70565b600061049682610871565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018490529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505060015461058492507f0000000000000000000000000000000000000000000000000000000000000000915073ffffffffffffffffffffffffffffffffffffffff1683610b47565b6001546040517f3b4da69f0000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff90911690633b4da69f90604401600060405180830381600087803b1580156105f657600080fd5b505af115801561060a573d6000803e3d6000fd5b505060408051338152602081018690527fdf2b996992aeaae3212b8d32b9c3c224196146804bed6814ec28d864b4eb3fc593500190505b60405180910390a15050565b60008082116106b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f43616e6e6f74207374616b65203020746f6b656e730000000000000000000000604482015260640161047a565b6106c0610a70565b6005546106ee906106e990600f0b6106e085670de0b6b3a7640000610cc4565b600f0b90610d17565b610d90565b905061071c7f0000000000000000000000000000000000000000000000000000000000000000333085610e0c565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff871681526020810186905260008183015290517fcf5c56b135ea8f1d57357dad28d8a7f64f55756e226643908842181edd74d8019350908190036060019150a15b92915050565b61082a610e6a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600061081c6106e96108896108846108b8565b610eeb565b61089b85670de0b6b3a7640000610cc4565b600f0b90610f1b565b6108ac610e6a565b6108b66000610f72565b565b6000600354600454426108cb919061193e565b6108d59190611980565b905090565b600061081c338361064d565b6108ee610e6a565b6108f6610a70565b6109166109038383610cc4565b61090d6001610fe7565b600f0b90611005565b600280547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790555050565b600061097f61097761096c84610fe7565b61089b6108846108b8565b600f0b611059565b67ffffffffffffffff1692915050565b600061097f6109776109a084610fe7565b61089b6109ad6001610fe7565b600254600f0b90611075565b6109c1610e6a565b73ffffffffffffffffffffffffffffffffffffffff8116610a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161047a565b610a6d81610f72565b50565b6000610a7a6108b8565b90506006548111610a885750565b610a9181610eeb565b600580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905560068190556000610ae3828061193e565b6005549091507faede5390ed10bde4ef7003c320b4df98c2b8df8749030985178fdd5a55c506469082908490610b229061097790600f0b612710610f1b565b60408051938452602084019290925267ffffffffffffffff1690820152606001610641565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be191906118f6565b9050610cbe847f095ea7b30000000000000000000000000000000000000000000000000000000085610c1386866119bb565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110c9565b50505050565b600081600003610cd357600080fd5b6000610cdf84846111dd565b90506f7fffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff82161115610d1057600080fd5b9392505050565b600081600f0b600003610d2957600080fd5b600082600f0b604085600f0b901b81610d4457610d44611951565b0590507fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590610d8757506f7fffffffffffffffffffffffffffffff8113155b610d1057600080fd5b600080610d9f83600f0b611059565b67ffffffffffffffff1690506000610ddb610977610dc4670de0b6b3a7640000610fe7565b61089b610dd086610fe7565b600f89900b90611075565b67ffffffffffffffff16905080610dfa83670de0b6b3a76400006119ce565b610e0491906119bb565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610cbe9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c3c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161047a565b60008060065483610efc919061193e565b600254909150610d1090610f1390600f0b8361136e565b600554600f0b905b6000600f83810b9083900b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590610d8757506f7fffffffffffffffffffffffffffffff811315610d1057600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000677fffffffffffffff821115610ffe57600080fd5b5060401b90565b6000600f83810b9083900b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590610d8757506f7fffffffffffffffffffffffffffffff811315610d1057600080fd5b60008082600f0b121561106b57600080fd5b50600f0b60401d90565b6000600f82810b9084900b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590610d8757506f7fffffffffffffffffffffffffffffff811315610d1057600080fd5b600061112b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116df9092919063ffffffff16565b905080516000148061114c57508080602001905181019061114c91906119e5565b6111d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161047a565b505050565b6000816000036111ec57600080fd5b600077ffffffffffffffffffffffffffffffffffffffffffffffff84116112285782604085901b8161122057611220611951565b049050611351565b60c084811c6401000000008110611241576020918201911c5b620100008110611253576010918201911c5b6101008110611264576008918201911c5b60108110611274576004918201911c5b60048110611284576002918201911c5b60028110611293576001820191505b60bf820360018603901c6001018260ff0387901b816112b4576112b4611951565b0492506fffffffffffffffffffffffffffffffff8311156112d457600080fd5b608085901c83026fffffffffffffffffffffffffffffffff8616840260c088901c604089901b82811015611309576001820391505b608084901b92900382811015611320576001820391505b829003608084901c821461133657611336611a07565b88818161134557611345611951565b04870196505050505050505b6fffffffffffffffffffffffffffffffff811115610d1057600080fd5b600080600084600f0b1280156113875750826001166001145b905060008085600f0b1261139b57846113a0565b846000035b6fffffffffffffffffffffffffffffffff16905070010000000000000000000000000000000068010000000000000000821161145057603f82901b91505b84156114485760018516156113f3578102607f1c5b908002607f1c906002851615611409578102607f1c5b908002607f1c90600485161561141f578102607f1c5b908002607f1c906008851615611435578102607f1c5b60049490941c93908002607f1c906113de565b60401c611678565b603f6c010000000000000000000000008310156114915760209290921b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015b6e0100000000000000000000000000008310156114d25760109290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0015b6f010000000000000000000000000000008310156115145760089290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8015b6f100000000000000000000000000000008310156115565760049290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc015b6f400000000000000000000000000000008310156115985760029290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe015b6f800000000000000000000000000000008310156115da5760019290921b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b60005b861561166157604082106115f057600080fd5b600187161561162357918302607f1c91810170010000000000000000000000000000000083111561162357600192831c92015b928002607f1c9260019190911b90700100000000000000000000000000000000841061165557600193841c9391909101905b600187901c96506115dd565b6040811061166e57600080fd5b6040039190911c90505b600083611685578161168a565b816000035b90507fffffffffffffffffffffffffffffffff8000000000000000000000000000000081128015906116cc57506f7fffffffffffffffffffffffffffffff8113155b6116d557600080fd5b9695505050505050565b6060610e048484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117139190611a5a565b60006040518083038185875af1925050503d8060008114611750576040519150601f19603f3d011682016040523d82523d6000602084013e611755565b606091505b509150915061176687838387611771565b979650505050505050565b606083156118075782516000036118005773ffffffffffffffffffffffffffffffffffffffff85163b611800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161047a565b5081610e04565b610e04838381511561181c5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047a9190611a76565b60006020828403121561186257600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a6d57600080fd5b6000806040838503121561189e57600080fd5b82356118a981611869565b946020939093013593505050565b6000602082840312156118c957600080fd5b8135610d1081611869565b600080604083850312156118e757600080fd5b50508035926020909101359150565b60006020828403121561190857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561081c5761081c61190f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826119b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561081c5761081c61190f565b808202811582820484141761081c5761081c61190f565b6000602082840312156119f757600080fd5b81518015158114610d1057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60005b83811015611a51578181015183820152602001611a39565b50506000910152565b60008251611a6c818460208701611a36565b9190910192915050565b6020815260008251806020840152611a95816040850160208701611a36565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220428349e2ab26f96930c5aceda0a22486a9fc7def3adff1254df49885bac6c54b64736f6c6343000813003360806040523480156200001157600080fd5b50604051806040016040528060088152602001674f4754656d706c6560c01b815250604051806040016040528060098152602001684f475f54454d504c4560b81b815250816003908162000066919062000193565b50600462000075828262000193565b505050620000926200008c6200009860201b60201c565b6200009c565b6200025f565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011957607f821691505b6020821081036200013a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200018e57600081815260208120601f850160051c81016020861015620001695750805b601f850160051c820191505b818110156200018a5782815560010162000175565b5050505b505050565b81516001600160401b03811115620001af57620001af620000ee565b620001c781620001c0845462000104565b8462000140565b602080601f831160018114620001ff5760008415620001e65750858301515b600019600386901b1c1916600185901b1785556200018a565b600085815260208120601f198616915b8281101562000230578886015182559484019460019091019084016200020f565b50858210156200024f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6110ac806200026f6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb14610264578063dd62ed3e14610277578063f2fde38b146102bd57600080fd5b806395d89b4114610249578063a457c2d71461025157600080fd5b806370a08231146101d0578063715018a61461020657806379cc67901461020e5780638da5cb5b1461022157600080fd5b8063313ce567116100ee578063313ce56714610186578063395093511461019557806340c10f19146101a857806342966c68146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b6101286102d0565b6040516101359190610e80565b60405180910390f35b61015161014c366004610f15565b610362565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610f3f565b61037c565b60405160128152602001610135565b6101516101a3366004610f15565b6103a0565b6101bb6101b6366004610f15565b6103ec565b005b6101bb6101cb366004610f7b565b610402565b6101656101de366004610f94565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101bb61040f565b6101bb61021c366004610f15565b610423565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610128610438565b61015161025f366004610f15565b610447565b610151610272366004610f15565b61051d565b610165610285366004610fb6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101bb6102cb366004610f94565b61052b565b6060600380546102df90610fe9565b80601f016020809104026020016040519081016040528092919081815260200182805461030b90610fe9565b80156103585780601f1061032d57610100808354040283529160200191610358565b820191906000526020600020905b81548152906001019060200180831161033b57829003601f168201915b5050505050905090565b6000336103708185856105df565b60019150505b92915050565b60003361038a858285610793565b61039585858561086a565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061037090829086906103e790879061103c565b6105df565b6103f4610ad9565b6103fe8282610b5a565b5050565b61040c3382610c4d565b50565b610417610ad9565b6104216000610e09565b565b61042e823383610793565b6103fe8282610c4d565b6060600480546102df90610fe9565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61039582868684036105df565b60003361037081858561086a565b610533610ad9565b73ffffffffffffffffffffffffffffffffffffffff81166105d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610507565b61040c81610e09565b73ffffffffffffffffffffffffffffffffffffffff8316610681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108645781811015610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610507565b61086484848484036105df565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661090d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff82166109b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610a66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610864565b60055473ffffffffffffffffffffffffffffffffffffffff163314610421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610507565b8060026000828254610be9919061103c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610786565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610ead57858101830151858201604001528201610e91565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f1057600080fd5b919050565b60008060408385031215610f2857600080fd5b610f3183610eec565b946020939093013593505050565b600080600060608486031215610f5457600080fd5b610f5d84610eec565b9250610f6b60208501610eec565b9150604084013590509250925092565b600060208284031215610f8d57600080fd5b5035919050565b600060208284031215610fa657600080fd5b610faf82610eec565b9392505050565b60008060408385031215610fc957600080fd5b610fd283610eec565b9150610fe060208401610eec565b90509250929050565b600181811c90821680610ffd57607f821691505b602082108103611036577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80820180821115610376577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212203ebedec018f84ed631d77fa2b377c85b420590ada84e2b78bccf15f23a36ed7164736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061016c5760003560e01c80638da5cb5b116100cd578063cf98400d11610081578063e6fd48bc11610066578063e6fd48bc1461030b578063ed3b970414610314578063f2fde38b1461032757600080fd5b8063cf98400d146102d8578063d3e06b5e146102eb57600080fd5b8063a694fc3a116100b2578063a694fc3a146102a9578063a9f53dac146102bc578063b7642a43146102cf57600080fd5b80638da5cb5b146102645780638f1284aa1461028257600080fd5b806350e23d0011610124578063715018a611610109578063715018a61461024b57806376671808146102535780637ca076d71461025b57600080fd5b806350e23d00146101f257806359167e481461023e57600080fd5b80633740d556116101555780633740d556146101ac578063386dea67146101cc57806347bb89f0146101df57600080fd5b80632e17de78146101715780632ee4090814610186575b600080fd5b61018461017f366004611850565b61033a565b005b61019961019436600461188b565b61064d565b6040519081526020015b60405180910390f35b6005546101b990600f0b81565b604051600f9190910b81526020016101a3565b6101846101da3660046118b7565b610822565b6101996101ed366004611850565b610871565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a3565b6002546101b990600f0b81565b6101846108a4565b6101996108b8565b61019960035481565b60005473ffffffffffffffffffffffffffffffffffffffff16610219565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b6101996102b7366004611850565b6108da565b6101846102ca3660046118d4565b6108e6565b61019960065481565b6101996102e6366004611850565b61095b565b6001546102199073ffffffffffffffffffffffffffffffffffffffff1681565b61019960045481565b610199610322366004611850565b61098f565b6101846103353660046118b7565b6109b9565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015281907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063dd62ed3e90604401602060405180830381865afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f091906118f6565b1015610483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f496e73756666696369656e74204f4754656d706c6520616c6c6f77616e63652e60448201527f2043616e6e6f7420756e7374616b65000000000000000000000000000000000060648201526084015b60405180910390fd5b61048b610a70565b600061049682610871565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018490529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505060015461058492507f0000000000000000000000000000000000000000000000000000000000000000915073ffffffffffffffffffffffffffffffffffffffff1683610b47565b6001546040517f3b4da69f0000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff90911690633b4da69f90604401600060405180830381600087803b1580156105f657600080fd5b505af115801561060a573d6000803e3d6000fd5b505060408051338152602081018690527fdf2b996992aeaae3212b8d32b9c3c224196146804bed6814ec28d864b4eb3fc593500190505b60405180910390a15050565b60008082116106b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f43616e6e6f74207374616b65203020746f6b656e730000000000000000000000604482015260640161047a565b6106c0610a70565b6005546106ee906106e990600f0b6106e085670de0b6b3a7640000610cc4565b600f0b90610d17565b610d90565b905061071c7f0000000000000000000000000000000000000000000000000000000000000000333085610e0c565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff871681526020810186905260008183015290517fcf5c56b135ea8f1d57357dad28d8a7f64f55756e226643908842181edd74d8019350908190036060019150a15b92915050565b61082a610e6a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600061081c6106e96108896108846108b8565b610eeb565b61089b85670de0b6b3a7640000610cc4565b600f0b90610f1b565b6108ac610e6a565b6108b66000610f72565b565b6000600354600454426108cb919061193e565b6108d59190611980565b905090565b600061081c338361064d565b6108ee610e6a565b6108f6610a70565b6109166109038383610cc4565b61090d6001610fe7565b600f0b90611005565b600280547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790555050565b600061097f61097761096c84610fe7565b61089b6108846108b8565b600f0b611059565b67ffffffffffffffff1692915050565b600061097f6109776109a084610fe7565b61089b6109ad6001610fe7565b600254600f0b90611075565b6109c1610e6a565b73ffffffffffffffffffffffffffffffffffffffff8116610a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161047a565b610a6d81610f72565b50565b6000610a7a6108b8565b90506006548111610a885750565b610a9181610eeb565b600580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905560068190556000610ae3828061193e565b6005549091507faede5390ed10bde4ef7003c320b4df98c2b8df8749030985178fdd5a55c506469082908490610b229061097790600f0b612710610f1b565b60408051938452602084019290925267ffffffffffffffff1690820152606001610641565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be191906118f6565b9050610cbe847f095ea7b30000000000000000000000000000000000000000000000000000000085610c1386866119bb565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110c9565b50505050565b600081600003610cd357600080fd5b6000610cdf84846111dd565b90506f7fffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff82161115610d1057600080fd5b9392505050565b600081600f0b600003610d2957600080fd5b600082600f0b604085600f0b901b81610d4457610d44611951565b0590507fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590610d8757506f7fffffffffffffffffffffffffffffff8113155b610d1057600080fd5b600080610d9f83600f0b611059565b67ffffffffffffffff1690506000610ddb610977610dc4670de0b6b3a7640000610fe7565b61089b610dd086610fe7565b600f89900b90611075565b67ffffffffffffffff16905080610dfa83670de0b6b3a76400006119ce565b610e0491906119bb565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610cbe9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c3c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161047a565b60008060065483610efc919061193e565b600254909150610d1090610f1390600f0b8361136e565b600554600f0b905b6000600f83810b9083900b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590610d8757506f7fffffffffffffffffffffffffffffff811315610d1057600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000677fffffffffffffff821115610ffe57600080fd5b5060401b90565b6000600f83810b9083900b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590610d8757506f7fffffffffffffffffffffffffffffff811315610d1057600080fd5b60008082600f0b121561106b57600080fd5b50600f0b60401d90565b6000600f82810b9084900b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590610d8757506f7fffffffffffffffffffffffffffffff811315610d1057600080fd5b600061112b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116df9092919063ffffffff16565b905080516000148061114c57508080602001905181019061114c91906119e5565b6111d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161047a565b505050565b6000816000036111ec57600080fd5b600077ffffffffffffffffffffffffffffffffffffffffffffffff84116112285782604085901b8161122057611220611951565b049050611351565b60c084811c6401000000008110611241576020918201911c5b620100008110611253576010918201911c5b6101008110611264576008918201911c5b60108110611274576004918201911c5b60048110611284576002918201911c5b60028110611293576001820191505b60bf820360018603901c6001018260ff0387901b816112b4576112b4611951565b0492506fffffffffffffffffffffffffffffffff8311156112d457600080fd5b608085901c83026fffffffffffffffffffffffffffffffff8616840260c088901c604089901b82811015611309576001820391505b608084901b92900382811015611320576001820391505b829003608084901c821461133657611336611a07565b88818161134557611345611951565b04870196505050505050505b6fffffffffffffffffffffffffffffffff811115610d1057600080fd5b600080600084600f0b1280156113875750826001166001145b905060008085600f0b1261139b57846113a0565b846000035b6fffffffffffffffffffffffffffffffff16905070010000000000000000000000000000000068010000000000000000821161145057603f82901b91505b84156114485760018516156113f3578102607f1c5b908002607f1c906002851615611409578102607f1c5b908002607f1c90600485161561141f578102607f1c5b908002607f1c906008851615611435578102607f1c5b60049490941c93908002607f1c906113de565b60401c611678565b603f6c010000000000000000000000008310156114915760209290921b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015b6e0100000000000000000000000000008310156114d25760109290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0015b6f010000000000000000000000000000008310156115145760089290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8015b6f100000000000000000000000000000008310156115565760049290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc015b6f400000000000000000000000000000008310156115985760029290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe015b6f800000000000000000000000000000008310156115da5760019290921b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b60005b861561166157604082106115f057600080fd5b600187161561162357918302607f1c91810170010000000000000000000000000000000083111561162357600192831c92015b928002607f1c9260019190911b90700100000000000000000000000000000000841061165557600193841c9391909101905b600187901c96506115dd565b6040811061166e57600080fd5b6040039190911c90505b600083611685578161168a565b816000035b90507fffffffffffffffffffffffffffffffff8000000000000000000000000000000081128015906116cc57506f7fffffffffffffffffffffffffffffff8113155b6116d557600080fd5b9695505050505050565b6060610e048484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117139190611a5a565b60006040518083038185875af1925050503d8060008114611750576040519150601f19603f3d011682016040523d82523d6000602084013e611755565b606091505b509150915061176687838387611771565b979650505050505050565b606083156118075782516000036118005773ffffffffffffffffffffffffffffffffffffffff85163b611800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161047a565b5081610e04565b610e04838381511561181c5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047a9190611a76565b60006020828403121561186257600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a6d57600080fd5b6000806040838503121561189e57600080fd5b82356118a981611869565b946020939093013593505050565b6000602082840312156118c957600080fd5b8135610d1081611869565b600080604083850312156118e757600080fd5b50508035926020909101359150565b60006020828403121561190857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561081c5761081c61190f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826119b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561081c5761081c61190f565b808202811582820484141761081c5761081c61190f565b6000602082840312156119f757600080fd5b81518015158114610d1057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60005b83811015611a51578181015183820152602001611a39565b50506000910152565b60008251611a6c818460208701611a36565b9190910192915050565b6020815260008251806020840152611a95816040850160208701611a36565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220428349e2ab26f96930c5aceda0a22486a9fc7def3adff1254df49885bac6c54b64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/governance/ElderElection.sol/ElderElection.json b/apps/dapp/abi/contracts/governance/ElderElection.sol/ElderElection.json new file mode 100644 index 000000000..ae222175d --- /dev/null +++ b/apps/dapp/abi/contracts/governance/ElderElection.sol/ElderElection.json @@ -0,0 +1,509 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ElderElection", + "sourceName": "contracts/governance/ElderElection.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract Templar", + "name": "_templars", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "lateBy", + "type": "uint256" + } + ], + "name": "DeadlineExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "InvalidNonce", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + } + ], + "name": "NotCandidate", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + } + ], + "name": "NotFromTemplar", + "type": "error" + }, + { + "inputs": [], + "name": "TooManyEndorsements", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "discordIds", + "type": "uint256[]" + } + ], + "name": "UpdateEndorsements", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isNominated", + "type": "bool" + } + ], + "name": "UpdateNomination", + "type": "event" + }, + { + "inputs": [], + "name": "CAN_NOMINATE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "candidates", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "endorsementsBy", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + } + ], + "name": "nominate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numCandidates", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "discordIds", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct ElderElection.EndorsementReq", + "name": "req", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "relayedSetEndorsementsFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + } + ], + "name": "resign", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "discordIds", + "type": "uint256[]" + } + ], + "name": "setEndorsements", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "templars", + "outputs": [ + { + "internalType": "contract Templar", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162001aa938038062001aa98339810160408190526200003491620001bb565b600480546001600160a01b0319166001600160a01b0383161790556200005c6000336200011a565b506040805160a08082018352600d60608084019182526c22b63232b922b632b1ba34b7b760991b6080808601919091529184528451808601865260018152603160f81b6020808301918252808701839052468789018190529651805190820120925190912087517fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e818401528089019390935292820192909252808301949094528451808503830181529390920190935281519101209052620001ed565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620001b7576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001763390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600060208284031215620001ce57600080fd5b81516001600160a01b0381168114620001e657600080fd5b9392505050565b6080516118a062000209600039600061075201526118a06000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806374446bc9116100b2578063b03d48ca11610081578063d547741f11610066578063d547741f146102de578063f6d3c3b8146102f1578063ff58984f1461030457600080fd5b8063b03d48ca146102a4578063c5f28e49146102cb57600080fd5b806374446bc9146102255780637ecebe001461023857806391d1485414610258578063a217fddf1461029c57600080fd5b80633477ee2e116100ee5780633477ee2e146101a157806336568abe146101c45780635216509a146101d757806362475fe4146101e057600080fd5b806301ffc9a71461012057806308d9801c14610148578063248a9ca31461015d5780632f2ff15d1461018e575b600080fd5b61013361012e3660046111fe565b610317565b60405190151581526020015b60405180910390f35b61015b610156366004611240565b6103b0565b005b61018061016b366004611240565b60009081526020819052604090206001015490565b60405190815260200161013f565b61015b61019c366004611282565b6104fc565b6101336101af366004611240565b60016020526000908152604090205460ff1681565b61015b6101d2366004611282565b610526565b61018060025481565b6004546102009073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b61015b6102333660046112ae565b6105da565b610180610246366004611323565b60056020526000908152604090205481565b610133610266366004611282565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610180600081565b6101807ff30641a45a85a618e8a3f2baf155ecb1f3eca7bbc05f237c578245d02c78e0c981565b61015b6102d9366004611240565b6105e5565b61015b6102ec366004611282565b610729565b61015b6102ff36600461133e565b61074e565b6101806103123660046113dd565b6109f3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103aa57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7ff30641a45a85a618e8a3f2baf155ecb1f3eca7bbc05f237c578245d02c78e0c96103da81610a24565b600480546040517f0e2e44e800000000000000000000000000000000000000000000000000000000815291820184905273ffffffffffffffffffffffffffffffffffffffff1690630e2e44e89060240160006040518083038186803b15801561044257600080fd5b505afa158015610456573d6000803e3d6000fd5b50505060008381526001602052604090205460ff161590506104f8576000828152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560028054919290916104bb908490611436565b90915550506040516000815282907f2a11c0b7ccdfbb01ac9ecc8ebe438d26f017e861fcca878abc936f48fec18f52906020015b60405180910390a25b5050565b60008281526020819052604090206001015461051781610a24565b6105218383610a31565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146105d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6104f88282610b21565b6104f8338383610bd8565b7ff30641a45a85a618e8a3f2baf155ecb1f3eca7bbc05f237c578245d02c78e0c961060f81610a24565b600480546040517f0e2e44e800000000000000000000000000000000000000000000000000000000815291820184905273ffffffffffffffffffffffffffffffffffffffff1690630e2e44e89060240160006040518083038186803b15801561067757600080fd5b505afa15801561068b573d6000803e3d6000fd5b50505060008381526001602052604090205460ff1690506104f8576000828152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905560028054919290916106f1908490611449565b90915550506040516001815282907f2a11c0b7ccdfbb01ac9ecc8ebe438d26f017e861fcca878abc936f48fec18f52906020016104ef565b60008281526020819052604090206001015461074481610a24565b6105218383610b21565b60007f000000000000000000000000000000000000000000000000000000000000000061078261077d86611503565b610c9a565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019290925260428201526062016040516020818303038152906040528051906020012090506000806108168386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d3692505050565b9092509050600081600481111561082f5761082f6115da565b1461088c576108416020870187611323565b6040517fd855c4f400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016105c7565b85604001354211156108db576108a6604087013542611436565b6040517fbc3088ef0000000000000000000000000000000000000000000000000000000081526004016105c791815260200190565b6108e86020870187611323565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610927576108416020870187611323565b606086013561096c61093c6020890189611323565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080546001810190915590565b146109c95761097e6020870187611323565b6040517fc9c7838300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016105c7565b6109eb6109d96020880188611323565b6109e66020890189611609565b610bd8565b505050505050565b60036020528160005260406000208181548110610a0f57600080fd5b90600052602060002001600091509150505481565b610a2e8133610d7b565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166104f85760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610ac33390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156104f85760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600254811115610c14576040517fa300300000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260409020610c4490838361119e565b508273ffffffffffffffffffffffffffffffffffffffff167fe1e033370be28bdd2a7b73796f5a1b4f4e7c27ca8b94d610c1f0387ef5a6d7898383604051610c8d929190611671565b60405180910390a2505050565b60007f71a639611fdf3926d8551959b78369e0a6216ef5034c5825ed44494b2f8ff9cf8260000151610ccf8460200151610e33565b6040808601516060808801518351602081019790975273ffffffffffffffffffffffffffffffffffffffff9095169286019290925290840191909152608083015260a082015260c0015b604051602081830303815290604052805190602001209050919050565b6000808251604103610d6c5760208301516040840151606085015160001a610d6087828585610e46565b94509450505050610d74565b506000905060025b9250929050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166104f857610db981610f35565b610dc4836020610f54565b604051602001610dd59291906116e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526105c791600401611768565b600081604051602001610d1991906117b9565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610e7d5750600090506003610f2c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ed1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610f2557600060019250925050610f2c565b9150600090505b94509492505050565b60606103aa73ffffffffffffffffffffffffffffffffffffffff831660145b60606000610f638360026117ef565b610f6e906002611449565b67ffffffffffffffff811115610f8657610f8661145c565b6040519080825280601f01601f191660200182016040528015610fb0576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610fe757610fe7611806565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061104a5761104a611806565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006110868460026117ef565b611091906001611449565b90505b600181111561112e577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106110d2576110d2611806565b1a60f81b8282815181106110e8576110e8611806565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361112781611835565b9050611094565b508315611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105c7565b9392505050565b8280548282559060005260206000209081019282156111d9579160200282015b828111156111d95782358255916020019190600101906111be565b506111e59291506111e9565b5090565b5b808211156111e557600081556001016111ea565b60006020828403121561121057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461119757600080fd5b60006020828403121561125257600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461127d57600080fd5b919050565b6000806040838503121561129557600080fd5b823591506112a560208401611259565b90509250929050565b600080602083850312156112c157600080fd5b823567ffffffffffffffff808211156112d957600080fd5b818501915085601f8301126112ed57600080fd5b8135818111156112fc57600080fd5b8660208260051b850101111561131157600080fd5b60209290920196919550909350505050565b60006020828403121561133557600080fd5b61119782611259565b60008060006040848603121561135357600080fd5b833567ffffffffffffffff8082111561136b57600080fd5b908501906080828803121561137f57600080fd5b9093506020850135908082111561139557600080fd5b818601915086601f8301126113a957600080fd5b8135818111156113b857600080fd5b8760208285010111156113ca57600080fd5b6020830194508093505050509250925092565b600080604083850312156113f057600080fd5b6113f983611259565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156103aa576103aa611407565b808201808211156103aa576103aa611407565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156114ae576114ae61145c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156114fb576114fb61145c565b604052919050565b60006080823603121561151557600080fd5b61151d61148b565b61152683611259565b815260208084013567ffffffffffffffff8082111561154457600080fd5b9085019036601f83011261155757600080fd5b8135818111156115695761156961145c565b8060051b915061157a8483016114b4565b818152918301840191848101903684111561159457600080fd5b938501935b838510156115b257843582529385019390850190611599565b8086880152505050505050604083013560408201526060830135606082015280915050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261163e57600080fd5b83018035915067ffffffffffffffff82111561165957600080fd5b6020019150600581901b3603821315610d7457600080fd5b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156116aa57600080fd5b8260051b80856040850137919091016040019392505050565b60005b838110156116de5781810151838201526020016116c6565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161171f8160178501602088016116c3565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161175c8160288401602088016116c3565b01602801949350505050565b60208152600082518060208401526117878160408501602087016116c3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b815160009082906020808601845b838110156117e3578151855293820193908201906001016117c7565b50929695505050505050565b80820281158282048414176103aa576103aa611407565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008161184457611844611407565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212208af61d1013dd2e70cf3153fef55bd5ef4ae0e0dd61cd87a6cbb190b92e058d4764736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c806374446bc9116100b2578063b03d48ca11610081578063d547741f11610066578063d547741f146102de578063f6d3c3b8146102f1578063ff58984f1461030457600080fd5b8063b03d48ca146102a4578063c5f28e49146102cb57600080fd5b806374446bc9146102255780637ecebe001461023857806391d1485414610258578063a217fddf1461029c57600080fd5b80633477ee2e116100ee5780633477ee2e146101a157806336568abe146101c45780635216509a146101d757806362475fe4146101e057600080fd5b806301ffc9a71461012057806308d9801c14610148578063248a9ca31461015d5780632f2ff15d1461018e575b600080fd5b61013361012e3660046111fe565b610317565b60405190151581526020015b60405180910390f35b61015b610156366004611240565b6103b0565b005b61018061016b366004611240565b60009081526020819052604090206001015490565b60405190815260200161013f565b61015b61019c366004611282565b6104fc565b6101336101af366004611240565b60016020526000908152604090205460ff1681565b61015b6101d2366004611282565b610526565b61018060025481565b6004546102009073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b61015b6102333660046112ae565b6105da565b610180610246366004611323565b60056020526000908152604090205481565b610133610266366004611282565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610180600081565b6101807ff30641a45a85a618e8a3f2baf155ecb1f3eca7bbc05f237c578245d02c78e0c981565b61015b6102d9366004611240565b6105e5565b61015b6102ec366004611282565b610729565b61015b6102ff36600461133e565b61074e565b6101806103123660046113dd565b6109f3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806103aa57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7ff30641a45a85a618e8a3f2baf155ecb1f3eca7bbc05f237c578245d02c78e0c96103da81610a24565b600480546040517f0e2e44e800000000000000000000000000000000000000000000000000000000815291820184905273ffffffffffffffffffffffffffffffffffffffff1690630e2e44e89060240160006040518083038186803b15801561044257600080fd5b505afa158015610456573d6000803e3d6000fd5b50505060008381526001602052604090205460ff161590506104f8576000828152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560028054919290916104bb908490611436565b90915550506040516000815282907f2a11c0b7ccdfbb01ac9ecc8ebe438d26f017e861fcca878abc936f48fec18f52906020015b60405180910390a25b5050565b60008281526020819052604090206001015461051781610a24565b6105218383610a31565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146105d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6104f88282610b21565b6104f8338383610bd8565b7ff30641a45a85a618e8a3f2baf155ecb1f3eca7bbc05f237c578245d02c78e0c961060f81610a24565b600480546040517f0e2e44e800000000000000000000000000000000000000000000000000000000815291820184905273ffffffffffffffffffffffffffffffffffffffff1690630e2e44e89060240160006040518083038186803b15801561067757600080fd5b505afa15801561068b573d6000803e3d6000fd5b50505060008381526001602052604090205460ff1690506104f8576000828152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905560028054919290916106f1908490611449565b90915550506040516001815282907f2a11c0b7ccdfbb01ac9ecc8ebe438d26f017e861fcca878abc936f48fec18f52906020016104ef565b60008281526020819052604090206001015461074481610a24565b6105218383610b21565b60007f000000000000000000000000000000000000000000000000000000000000000061078261077d86611503565b610c9a565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019290925260428201526062016040516020818303038152906040528051906020012090506000806108168386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d3692505050565b9092509050600081600481111561082f5761082f6115da565b1461088c576108416020870187611323565b6040517fd855c4f400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016105c7565b85604001354211156108db576108a6604087013542611436565b6040517fbc3088ef0000000000000000000000000000000000000000000000000000000081526004016105c791815260200190565b6108e86020870187611323565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610927576108416020870187611323565b606086013561096c61093c6020890189611323565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080546001810190915590565b146109c95761097e6020870187611323565b6040517fc9c7838300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016105c7565b6109eb6109d96020880188611323565b6109e66020890189611609565b610bd8565b505050505050565b60036020528160005260406000208181548110610a0f57600080fd5b90600052602060002001600091509150505481565b610a2e8133610d7b565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166104f85760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610ac33390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156104f85760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600254811115610c14576040517fa300300000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260409020610c4490838361119e565b508273ffffffffffffffffffffffffffffffffffffffff167fe1e033370be28bdd2a7b73796f5a1b4f4e7c27ca8b94d610c1f0387ef5a6d7898383604051610c8d929190611671565b60405180910390a2505050565b60007f71a639611fdf3926d8551959b78369e0a6216ef5034c5825ed44494b2f8ff9cf8260000151610ccf8460200151610e33565b6040808601516060808801518351602081019790975273ffffffffffffffffffffffffffffffffffffffff9095169286019290925290840191909152608083015260a082015260c0015b604051602081830303815290604052805190602001209050919050565b6000808251604103610d6c5760208301516040840151606085015160001a610d6087828585610e46565b94509450505050610d74565b506000905060025b9250929050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166104f857610db981610f35565b610dc4836020610f54565b604051602001610dd59291906116e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526105c791600401611768565b600081604051602001610d1991906117b9565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610e7d5750600090506003610f2c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ed1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610f2557600060019250925050610f2c565b9150600090505b94509492505050565b60606103aa73ffffffffffffffffffffffffffffffffffffffff831660145b60606000610f638360026117ef565b610f6e906002611449565b67ffffffffffffffff811115610f8657610f8661145c565b6040519080825280601f01601f191660200182016040528015610fb0576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610fe757610fe7611806565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061104a5761104a611806565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006110868460026117ef565b611091906001611449565b90505b600181111561112e577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106110d2576110d2611806565b1a60f81b8282815181106110e8576110e8611806565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361112781611835565b9050611094565b508315611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105c7565b9392505050565b8280548282559060005260206000209081019282156111d9579160200282015b828111156111d95782358255916020019190600101906111be565b506111e59291506111e9565b5090565b5b808211156111e557600081556001016111ea565b60006020828403121561121057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461119757600080fd5b60006020828403121561125257600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461127d57600080fd5b919050565b6000806040838503121561129557600080fd5b823591506112a560208401611259565b90509250929050565b600080602083850312156112c157600080fd5b823567ffffffffffffffff808211156112d957600080fd5b818501915085601f8301126112ed57600080fd5b8135818111156112fc57600080fd5b8660208260051b850101111561131157600080fd5b60209290920196919550909350505050565b60006020828403121561133557600080fd5b61119782611259565b60008060006040848603121561135357600080fd5b833567ffffffffffffffff8082111561136b57600080fd5b908501906080828803121561137f57600080fd5b9093506020850135908082111561139557600080fd5b818601915086601f8301126113a957600080fd5b8135818111156113b857600080fd5b8760208285010111156113ca57600080fd5b6020830194508093505050509250925092565b600080604083850312156113f057600080fd5b6113f983611259565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156103aa576103aa611407565b808201808211156103aa576103aa611407565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156114ae576114ae61145c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156114fb576114fb61145c565b604052919050565b60006080823603121561151557600080fd5b61151d61148b565b61152683611259565b815260208084013567ffffffffffffffff8082111561154457600080fd5b9085019036601f83011261155757600080fd5b8135818111156115695761156961145c565b8060051b915061157a8483016114b4565b818152918301840191848101903684111561159457600080fd5b938501935b838510156115b257843582529385019390850190611599565b8086880152505050505050604083013560408201526060830135606082015280915050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261163e57600080fd5b83018035915067ffffffffffffffff82111561165957600080fd5b6020019150600581901b3603821315610d7457600080fd5b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156116aa57600080fd5b8260051b80856040850137919091016040019392505050565b60005b838110156116de5781810151838201526020016116c6565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161171f8160178501602088016116c3565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161175c8160288401602088016116c3565b01602801949350505050565b60208152600082518060208401526117878160408501602087016116c3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b815160009082906020808601845b838110156117e3578151855293820193908201906001016117c7565b50929695505050505050565b80820281158282048414176103aa576103aa611407565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008161184457611844611407565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212208af61d1013dd2e70cf3153fef55bd5ef4ae0e0dd61cd87a6cbb190b92e058d4764736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/governance/Templar.sol/Templar.json b/apps/dapp/abi/contracts/governance/Templar.sol/Templar.json new file mode 100644 index 000000000..3ba7ca5e0 --- /dev/null +++ b/apps/dapp/abi/contracts/governance/Templar.sol/Templar.json @@ -0,0 +1,668 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Templar", + "sourceName": "contracts/governance/Templar.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + } + ], + "name": "InvalidTemplar", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "baseUri", + "type": "string" + } + ], + "name": "BaseUriUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "CAN_ASSIGN", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OWNER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + } + ], + "name": "assign", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseUri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + } + ], + "name": "checkExists", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_baseUri", + "type": "string" + } + ], + "name": "setBaseUri", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c0604052601d60809081527f68747470733a2f2f646973636f72646170702e636f6d2f75736572732f00000060a0526007906200003e90826200023f565b503480156200004c57600080fd5b50604051806040016040528060078152602001662a32b6b83630b960c91b815250604051806040016040528060078152602001662a22a6a82620a960c91b81525081600090816200009e91906200023f565b506001620000ad82826200023f565b505050620000e27f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b33620000f560201b60201c565b620000ef600033620000f5565b6200030b565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff16620001965760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001553390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001c557607f821691505b602082108103620001e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200023a57600081815260208120601f850160051c81016020861015620002155750805b601f850160051c820191505b81811015620002365782815560010162000221565b5050505b505050565b81516001600160401b038111156200025b576200025b6200019a565b62000273816200026c8454620001b0565b84620001ec565b602080601f831160018114620002ab5760008415620002925750858301515b600019600386901b1c1916600185901b17855562000236565b600085815260208120601f198616915b82811015620002dc57888601518255948401946001909101908401620002bb565b5085821015620002fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612933806200031b6000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806370a08231116100ee578063a217fddf11610097578063be76048811610071578063be760488146103eb578063c87b56dd146103fe578063d547741f14610411578063e985e9c51461042457600080fd5b8063a217fddf146103bd578063a22cb465146103c5578063b88d4fde146103d857600080fd5b80639a6c91f9116100c85780639a6c91f91461037b5780639abc8320146103a2578063a0bcfc7f146103aa57600080fd5b806370a082311461031a57806391d148541461032d57806395d89b411461037357600080fd5b806323b872dd1161015b57806336568abe1161013557806336568abe146102ce57806342842e0e146102e15780634f558e79146102f45780636352211e1461030757600080fd5b806323b872dd14610285578063248a9ca3146102985780632f2ff15d146102bb57600080fd5b8063095ea7b31161018c578063095ea7b3146102285780630e2e44e81461023d578063117803e31461025057600080fd5b806301ffc9a7146101b357806306fdde03146101db578063081812fc146101f0575b600080fd5b6101c66101c1366004612137565b61046d565b60405190151581526020015b60405180910390f35b6101e361048d565b6040516101d291906121c2565b6102036101fe3660046121d5565b61051f565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b61023b610236366004612217565b610553565b005b61023b61024b3660046121d5565b6106e4565b6102777f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b81565b6040519081526020016101d2565b61023b610293366004612241565b610745565b6102776102a63660046121d5565b60009081526006602052604090206001015490565b61023b6102c936600461227d565b6107e6565b61023b6102dc36600461227d565b61080b565b61023b6102ef366004612241565b6108be565b6101c66103023660046121d5565b6108d9565b6102036103153660046121d5565b610905565b6102776103283660046122a9565b610991565b6101c661033b36600461227d565b600091825260066020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101e3610a5f565b6102777f709eaacc958b4ccc7b30fa5320524a69916886f681934efe0bc0b56086a549c681565b6101e3610a6e565b61023b6103b83660046122c4565b610afc565b610277600081565b61023b6103d3366004612336565b610b71565b61023b6103e63660046123a1565b610b7c565b61023b6103f9366004612217565b610c24565b6101e361040c3660046121d5565b610d35565b61023b61041f36600461227d565b610d9c565b6101c661043236600461249b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061047882610dc1565b80610487575061048782610ea4565b92915050565b60606000805461049c906124c5565b80601f01602080910402602001604051908101604052809291908181526020018280546104c8906124c5565b80156105155780601f106104ea57610100808354040283529160200191610515565b820191906000526020600020905b8154815290600101906020018083116104f857829003601f168201915b5050505050905090565b600061052a82610efa565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061055e82610905565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8216148061064957506106498133610432565b6106d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610617565b6106df8383610f85565b505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610742576040517fce8f7c2700000000000000000000000000000000000000000000000000000000815260048101829052602401610617565b50565b61074f3382611025565b6107db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610617565b6106df8383836110e5565b600082815260066020526040902060010154610801816113e0565b6106df83836113ea565b73ffffffffffffffffffffffffffffffffffffffff811633146108b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610617565b6108ba82826114de565b5050565b6106df83838360405180602001604052806000815250610b7c565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff161515610487565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610617565b600073ffffffffffffffffffffffffffffffffffffffff8216610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610617565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461049c906124c5565b60078054610a7b906124c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa7906124c5565b8015610af45780601f10610ac957610100808354040283529160200191610af4565b820191906000526020600020905b815481529060010190602001808311610ad757829003601f168201915b505050505081565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b610b26816113e0565b6007610b33838583612566565b507f24a9152dc695ecc801ad580886331ee12d7aac0fa2ae341a5ae3c2ccae36cb4f6007604051610b649190612681565b60405180910390a1505050565b6108ba338383611599565b610b863383611025565b610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610617565b610c1e848484846116c6565b50505050565b7f709eaacc958b4ccc7b30fa5320524a69916886f681934efe0bc0b56086a549c6610c4e816113e0565b73ffffffffffffffffffffffffffffffffffffffff8316610cb3576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610617565b60008281526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615610d2b578273ffffffffffffffffffffffffffffffffffffffff16610cfd83610905565b73ffffffffffffffffffffffffffffffffffffffff16146106df576106df610d2483610905565b84846110e5565b6106df8383611769565b6060610d4082610efa565b6000610d4a611783565b90506000815111610d6a5760405180602001604052806000815250610d95565b80610d7484611792565b604051602001610d8592919061272a565b6040516020818303038152906040525b9392505050565b600082815260066020526040902060010154610db7816113e0565b6106df83836114de565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480610e5457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061048757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610487565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610487575061048782610dc1565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610617565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610fdf82610905565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061103183610905565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061109f575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b806110dd57508373ffffffffffffffffffffffffffffffffffffffff166110c58461051f565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661110582610905565b73ffffffffffffffffffffffffffffffffffffffff16146111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610617565b73ffffffffffffffffffffffffffffffffffffffff821661124a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610617565b8273ffffffffffffffffffffffffffffffffffffffff1661126a82610905565b73ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610617565b600081815260046020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff8781168086526003855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6107428133611850565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108ba57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114803390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156108ba57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610617565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6116d18484846110e5565b6116dd8484848461190a565b610c1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610617565b6108ba828260405180602001604052806000815250611afd565b60606007805461049c906124c5565b6060600061179f83611ba0565b600101905060008167ffffffffffffffff8111156117bf576117bf612372565b6040519080825280601f01601f1916602001820160405280156117e9576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846117f357509392505050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108ba5761189081611c82565b61189b836020611ca1565b6040516020016118ac929190612759565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610617916004016121c2565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611af2576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906119819033908990889088906004016127da565b6020604051808303816000875af19250505080156119da575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526119d791810190612823565b60015b611aa7573d808015611a08576040519150601f19603f3d011682016040523d82523d6000602084013e611a0d565b606091505b508051600003611a9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610617565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506110dd565b506001949350505050565b611b078383611ee4565b611b14600084848461190a565b6106df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610617565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611be9577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611c15576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611c3357662386f26fc10000830492506010015b6305f5e1008310611c4b576305f5e100830492506008015b6127108310611c5f57612710830492506004015b60648310611c71576064830492506002015b600a83106104875760010192915050565b606061048773ffffffffffffffffffffffffffffffffffffffff831660145b60606000611cb083600261286f565b611cbb906002612886565b67ffffffffffffffff811115611cd357611cd3612372565b6040519080825280601f01601f191660200182016040528015611cfd576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611d3457611d34612899565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611d9757611d97612899565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611dd384600261286f565b611dde906001612886565b90505b6001811115611e7b577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611e1f57611e1f612899565b1a60f81b828281518110611e3557611e35612899565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611e74816128c8565b9050611de1565b508315610d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610617565b73ffffffffffffffffffffffffffffffffffffffff8216611f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610617565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611fed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610617565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610617565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461074257600080fd5b60006020828403121561214957600080fd5b8135610d9581612109565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b60008151808452612190816020860160208601612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610d956020830184612178565b6000602082840312156121e757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461221257600080fd5b919050565b6000806040838503121561222a57600080fd5b612233836121ee565b946020939093013593505050565b60008060006060848603121561225657600080fd5b61225f846121ee565b925061226d602085016121ee565b9150604084013590509250925092565b6000806040838503121561229057600080fd5b823591506122a0602084016121ee565b90509250929050565b6000602082840312156122bb57600080fd5b610d95826121ee565b600080602083850312156122d757600080fd5b823567ffffffffffffffff808211156122ef57600080fd5b818501915085601f83011261230357600080fd5b81358181111561231257600080fd5b86602082850101111561232457600080fd5b60209290920196919550909350505050565b6000806040838503121561234957600080fd5b612352836121ee565b91506020830135801515811461236757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156123b757600080fd5b6123c0856121ee565b93506123ce602086016121ee565b925060408501359150606085013567ffffffffffffffff808211156123f257600080fd5b818701915087601f83011261240657600080fd5b81358181111561241857612418612372565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561245e5761245e612372565b816040528281528a602084870101111561247757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156124ae57600080fd5b6124b7836121ee565b91506122a0602084016121ee565b600181811c908216806124d957607f821691505b602082108103612512577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156106df57600081815260208120601f850160051c8101602086101561253f5750805b601f850160051c820191505b8181101561255e5782815560010161254b565b505050505050565b67ffffffffffffffff83111561257e5761257e612372565b6125928361258c83546124c5565b83612518565b6000601f8411600181146125e457600085156125ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561267a565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156126335786850135825560209485019460019092019101612613565b508682101561266e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6000602080835260008454612695816124c5565b808487015260406001808416600081146126b657600181146126ee5761271c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a0101955061271c565b896000528660002060005b858110156127145781548b82018601529083019088016126f9565b8a0184019650505b509398975050505050505050565b6000835161273c818460208801612154565b835190830190612750818360208801612154565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612791816017850160208801612154565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516127ce816028840160208801612154565b01602801949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526128196080830184612178565b9695505050505050565b60006020828403121561283557600080fd5b8151610d9581612109565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761048757610487612840565b8082018082111561048757610487612840565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000816128d7576128d7612840565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212204b0a846bda959ca76c682495d41ef230a964fd1964726051896b8b91328656f664736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c806370a08231116100ee578063a217fddf11610097578063be76048811610071578063be760488146103eb578063c87b56dd146103fe578063d547741f14610411578063e985e9c51461042457600080fd5b8063a217fddf146103bd578063a22cb465146103c5578063b88d4fde146103d857600080fd5b80639a6c91f9116100c85780639a6c91f91461037b5780639abc8320146103a2578063a0bcfc7f146103aa57600080fd5b806370a082311461031a57806391d148541461032d57806395d89b411461037357600080fd5b806323b872dd1161015b57806336568abe1161013557806336568abe146102ce57806342842e0e146102e15780634f558e79146102f45780636352211e1461030757600080fd5b806323b872dd14610285578063248a9ca3146102985780632f2ff15d146102bb57600080fd5b8063095ea7b31161018c578063095ea7b3146102285780630e2e44e81461023d578063117803e31461025057600080fd5b806301ffc9a7146101b357806306fdde03146101db578063081812fc146101f0575b600080fd5b6101c66101c1366004612137565b61046d565b60405190151581526020015b60405180910390f35b6101e361048d565b6040516101d291906121c2565b6102036101fe3660046121d5565b61051f565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b61023b610236366004612217565b610553565b005b61023b61024b3660046121d5565b6106e4565b6102777f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b81565b6040519081526020016101d2565b61023b610293366004612241565b610745565b6102776102a63660046121d5565b60009081526006602052604090206001015490565b61023b6102c936600461227d565b6107e6565b61023b6102dc36600461227d565b61080b565b61023b6102ef366004612241565b6108be565b6101c66103023660046121d5565b6108d9565b6102036103153660046121d5565b610905565b6102776103283660046122a9565b610991565b6101c661033b36600461227d565b600091825260066020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101e3610a5f565b6102777f709eaacc958b4ccc7b30fa5320524a69916886f681934efe0bc0b56086a549c681565b6101e3610a6e565b61023b6103b83660046122c4565b610afc565b610277600081565b61023b6103d3366004612336565b610b71565b61023b6103e63660046123a1565b610b7c565b61023b6103f9366004612217565b610c24565b6101e361040c3660046121d5565b610d35565b61023b61041f36600461227d565b610d9c565b6101c661043236600461249b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061047882610dc1565b80610487575061048782610ea4565b92915050565b60606000805461049c906124c5565b80601f01602080910402602001604051908101604052809291908181526020018280546104c8906124c5565b80156105155780601f106104ea57610100808354040283529160200191610515565b820191906000526020600020905b8154815290600101906020018083116104f857829003601f168201915b5050505050905090565b600061052a82610efa565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061055e82610905565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8216148061064957506106498133610432565b6106d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610617565b6106df8383610f85565b505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610742576040517fce8f7c2700000000000000000000000000000000000000000000000000000000815260048101829052602401610617565b50565b61074f3382611025565b6107db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610617565b6106df8383836110e5565b600082815260066020526040902060010154610801816113e0565b6106df83836113ea565b73ffffffffffffffffffffffffffffffffffffffff811633146108b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610617565b6108ba82826114de565b5050565b6106df83838360405180602001604052806000815250610b7c565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff161515610487565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610617565b600073ffffffffffffffffffffffffffffffffffffffff8216610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610617565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461049c906124c5565b60078054610a7b906124c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa7906124c5565b8015610af45780601f10610ac957610100808354040283529160200191610af4565b820191906000526020600020905b815481529060010190602001808311610ad757829003601f168201915b505050505081565b7f6270edb7c868f86fda4adedba75108201087268ea345934db8bad688e1feb91b610b26816113e0565b6007610b33838583612566565b507f24a9152dc695ecc801ad580886331ee12d7aac0fa2ae341a5ae3c2ccae36cb4f6007604051610b649190612681565b60405180910390a1505050565b6108ba338383611599565b610b863383611025565b610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610617565b610c1e848484846116c6565b50505050565b7f709eaacc958b4ccc7b30fa5320524a69916886f681934efe0bc0b56086a549c6610c4e816113e0565b73ffffffffffffffffffffffffffffffffffffffff8316610cb3576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610617565b60008281526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615610d2b578273ffffffffffffffffffffffffffffffffffffffff16610cfd83610905565b73ffffffffffffffffffffffffffffffffffffffff16146106df576106df610d2483610905565b84846110e5565b6106df8383611769565b6060610d4082610efa565b6000610d4a611783565b90506000815111610d6a5760405180602001604052806000815250610d95565b80610d7484611792565b604051602001610d8592919061272a565b6040516020818303038152906040525b9392505050565b600082815260066020526040902060010154610db7816113e0565b6106df83836114de565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480610e5457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061048757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610487565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610487575061048782610dc1565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610617565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610fdf82610905565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061103183610905565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061109f575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b806110dd57508373ffffffffffffffffffffffffffffffffffffffff166110c58461051f565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661110582610905565b73ffffffffffffffffffffffffffffffffffffffff16146111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610617565b73ffffffffffffffffffffffffffffffffffffffff821661124a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610617565b8273ffffffffffffffffffffffffffffffffffffffff1661126a82610905565b73ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610617565b600081815260046020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff8781168086526003855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6107428133611850565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108ba57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114803390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156108ba57600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610617565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6116d18484846110e5565b6116dd8484848461190a565b610c1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610617565b6108ba828260405180602001604052806000815250611afd565b60606007805461049c906124c5565b6060600061179f83611ba0565b600101905060008167ffffffffffffffff8111156117bf576117bf612372565b6040519080825280601f01601f1916602001820160405280156117e9576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846117f357509392505050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108ba5761189081611c82565b61189b836020611ca1565b6040516020016118ac929190612759565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610617916004016121c2565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611af2576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906119819033908990889088906004016127da565b6020604051808303816000875af19250505080156119da575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526119d791810190612823565b60015b611aa7573d808015611a08576040519150601f19603f3d011682016040523d82523d6000602084013e611a0d565b606091505b508051600003611a9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610617565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506110dd565b506001949350505050565b611b078383611ee4565b611b14600084848461190a565b6106df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610617565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611be9577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611c15576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611c3357662386f26fc10000830492506010015b6305f5e1008310611c4b576305f5e100830492506008015b6127108310611c5f57612710830492506004015b60648310611c71576064830492506002015b600a83106104875760010192915050565b606061048773ffffffffffffffffffffffffffffffffffffffff831660145b60606000611cb083600261286f565b611cbb906002612886565b67ffffffffffffffff811115611cd357611cd3612372565b6040519080825280601f01601f191660200182016040528015611cfd576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611d3457611d34612899565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611d9757611d97612899565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611dd384600261286f565b611dde906001612886565b90505b6001811115611e7b577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611e1f57611e1f612899565b1a60f81b828281518110611e3557611e35612899565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611e74816128c8565b9050611de1565b508315610d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610617565b73ffffffffffffffffffffffffffffffffffffffff8216611f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610617565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611fed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610617565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610617565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461074257600080fd5b60006020828403121561214957600080fd5b8135610d9581612109565b60005b8381101561216f578181015183820152602001612157565b50506000910152565b60008151808452612190816020860160208601612154565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610d956020830184612178565b6000602082840312156121e757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461221257600080fd5b919050565b6000806040838503121561222a57600080fd5b612233836121ee565b946020939093013593505050565b60008060006060848603121561225657600080fd5b61225f846121ee565b925061226d602085016121ee565b9150604084013590509250925092565b6000806040838503121561229057600080fd5b823591506122a0602084016121ee565b90509250929050565b6000602082840312156122bb57600080fd5b610d95826121ee565b600080602083850312156122d757600080fd5b823567ffffffffffffffff808211156122ef57600080fd5b818501915085601f83011261230357600080fd5b81358181111561231257600080fd5b86602082850101111561232457600080fd5b60209290920196919550909350505050565b6000806040838503121561234957600080fd5b612352836121ee565b91506020830135801515811461236757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156123b757600080fd5b6123c0856121ee565b93506123ce602086016121ee565b925060408501359150606085013567ffffffffffffffff808211156123f257600080fd5b818701915087601f83011261240657600080fd5b81358181111561241857612418612372565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561245e5761245e612372565b816040528281528a602084870101111561247757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156124ae57600080fd5b6124b7836121ee565b91506122a0602084016121ee565b600181811c908216806124d957607f821691505b602082108103612512577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156106df57600081815260208120601f850160051c8101602086101561253f5750805b601f850160051c820191505b8181101561255e5782815560010161254b565b505050505050565b67ffffffffffffffff83111561257e5761257e612372565b6125928361258c83546124c5565b83612518565b6000601f8411600181146125e457600085156125ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561267a565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156126335786850135825560209485019460019092019101612613565b508682101561266e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6000602080835260008454612695816124c5565b808487015260406001808416600081146126b657600181146126ee5761271c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a0101955061271c565b896000528660002060005b858110156127145781548b82018601529083019088016126f9565b8a0184019650505b509398975050505050505050565b6000835161273c818460208801612154565b835190830190612750818360208801612154565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612791816017850160208801612154565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516127ce816028840160208801612154565b01602801949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526128196080830184612178565b9695505050505050565b60006020828403121561283557600080fd5b8151610d9581612109565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761048757610487612840565b8082018082111561048757610487612840565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000816128d7576128d7612840565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212204b0a846bda959ca76c682495d41ef230a964fd1964726051896b8b91328656f664736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/governance/TemplarMetadata.sol/TemplarMetadata.json b/apps/dapp/abi/contracts/governance/TemplarMetadata.sol/TemplarMetadata.json new file mode 100644 index 000000000..31faba3a3 --- /dev/null +++ b/apps/dapp/abi/contracts/governance/TemplarMetadata.sol/TemplarMetadata.json @@ -0,0 +1,308 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TemplarMetadata", + "sourceName": "contracts/governance/TemplarMetadata.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract Templar", + "name": "_templars", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "templeRole", + "type": "string" + } + ], + "name": "UpdateTempleRole", + "type": "event" + }, + { + "inputs": [], + "name": "CAN_UPDATE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "discordId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_templeRole", + "type": "string" + } + ], + "name": "setRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "templars", + "outputs": [ + { + "internalType": "contract Templar", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "templeRole", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516111ff3803806111ff83398101604081905261002f916100fa565b600280546001600160a01b0319166001600160a01b03831617905561005560003361005b565b5061012a565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166100f6576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556100b53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006020828403121561010c57600080fd5b81516001600160a01b038116811461012357600080fd5b9392505050565b6110c6806101396000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806362475fe411610081578063adb8ce4b1161005b578063adb8ce4b14610200578063b1945a4914610227578063d547741f1461023a57600080fd5b806362475fe41461016f57806391d14854146101b4578063a217fddf146101f857600080fd5b80632f2ff15d116100b25780632f2ff15d1461012757806336568abe1461013c5780634c846d8a1461014f57600080fd5b806301ffc9a7146100ce578063248a9ca3146100f6575b600080fd5b6100e16100dc366004610ae1565b61024d565b60405190151581526020015b60405180910390f35b610119610104366004610b23565b60009081526020819052604090206001015490565b6040519081526020016100ed565b61013a610135366004610b3c565b6102e6565b005b61013a61014a366004610b3c565b610310565b61016261015d366004610b23565b6103c8565b6040516100ed9190610ba9565b60025461018f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b6100e16101c2366004610b3c565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610119600081565b6101197fec0223fa751197ea5595bdbb395d84cba45b7cf50a5dac2e95b1a7e811fed48181565b61013a610235366004610bfa565b610462565b61013a610248366004610b3c565b6105e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806102e057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546103018161060c565b61030b8383610619565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146103ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6103c48282610709565b5050565b600160205260009081526040902080546103e190610c76565b80601f016020809104026020016040519081016040528092919081815260200182805461040d90610c76565b801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b505050505081565b7fec0223fa751197ea5595bdbb395d84cba45b7cf50a5dac2e95b1a7e811fed48161048c8161060c565b6002546040517f0e2e44e80000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff90911690630e2e44e89060240160006040518083038186803b1580156104f657600080fd5b505afa15801561050a573d6000803e3d6000fd5b505050508282604051602001610521929190610cc9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600088815260018352929092209192610571929101610cd9565b60405160208183030381529060405280519060200120146105e15760008481526001602052604090206105a5838583610dea565b50837f8cd835d1bfe29714c85ccb882e3d41c5ad29aa51270d6d157946a2bcb18d8b2484846040516105d8929190610f05565b60405180910390a25b50505050565b6000828152602081905260409020600101546106028161060c565b61030b8383610709565b61061681336107c0565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166103c45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556106ab3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156103c45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166103c4576107fe81610878565b610809836020610897565b60405160200161081a929190610f52565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526103b191600401610ba9565b60606102e073ffffffffffffffffffffffffffffffffffffffff831660145b606060006108a6836002611002565b6108b1906002611019565b67ffffffffffffffff8111156108c9576108c9610d6d565b6040519080825280601f01601f1916602001820160405280156108f3576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061092a5761092a61102c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061098d5761098d61102c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006109c9846002611002565b6109d4906001611019565b90505b6001811115610a71577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610a1557610a1561102c565b1a60f81b828281518110610a2b57610a2b61102c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93610a6a8161105b565b90506109d7565b508315610ada576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016103b1565b9392505050565b600060208284031215610af357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ada57600080fd5b600060208284031215610b3557600080fd5b5035919050565b60008060408385031215610b4f57600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff81168114610b7a57600080fd5b809150509250929050565b60005b83811015610ba0578181015183820152602001610b88565b50506000910152565b6020815260008251806020840152610bc8816040850160208701610b85565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600060408486031215610c0f57600080fd5b83359250602084013567ffffffffffffffff80821115610c2e57600080fd5b818601915086601f830112610c4257600080fd5b813581811115610c5157600080fd5b876020828501011115610c6357600080fd5b6020830194508093505050509250925092565b600181811c90821680610c8a57607f821691505b602082108103610cc3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8183823760009101908152919050565b6000808354610ce781610c76565b60018281168015610cff5760018114610d3257610d61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450610d61565b8760005260208060002060005b85811015610d585781548a820152908401908201610d3f565b50505082870194505b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561030b57600081815260208120601f850160051c81016020861015610dc35750805b601f850160051c820191505b81811015610de257828155600101610dcf565b505050505050565b67ffffffffffffffff831115610e0257610e02610d6d565b610e1683610e108354610c76565b83610d9c565b6000601f841160018114610e685760008515610e325750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610efe565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015610eb75786850135825560209485019460019092019101610e97565b5086821015610ef2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610f8a816017850160208801610b85565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351610fc7816028840160208801610b85565b01602801949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102e0576102e0610fd3565b808201808211156102e0576102e0610fd3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008161106a5761106a610fd3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220ab183a074057998b29528540bda40b0f30c6a163d585749149f2ea0e2c953bc064736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c806362475fe411610081578063adb8ce4b1161005b578063adb8ce4b14610200578063b1945a4914610227578063d547741f1461023a57600080fd5b806362475fe41461016f57806391d14854146101b4578063a217fddf146101f857600080fd5b80632f2ff15d116100b25780632f2ff15d1461012757806336568abe1461013c5780634c846d8a1461014f57600080fd5b806301ffc9a7146100ce578063248a9ca3146100f6575b600080fd5b6100e16100dc366004610ae1565b61024d565b60405190151581526020015b60405180910390f35b610119610104366004610b23565b60009081526020819052604090206001015490565b6040519081526020016100ed565b61013a610135366004610b3c565b6102e6565b005b61013a61014a366004610b3c565b610310565b61016261015d366004610b23565b6103c8565b6040516100ed9190610ba9565b60025461018f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b6100e16101c2366004610b3c565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610119600081565b6101197fec0223fa751197ea5595bdbb395d84cba45b7cf50a5dac2e95b1a7e811fed48181565b61013a610235366004610bfa565b610462565b61013a610248366004610b3c565b6105e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806102e057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546103018161060c565b61030b8383610619565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146103ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6103c48282610709565b5050565b600160205260009081526040902080546103e190610c76565b80601f016020809104026020016040519081016040528092919081815260200182805461040d90610c76565b801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b505050505081565b7fec0223fa751197ea5595bdbb395d84cba45b7cf50a5dac2e95b1a7e811fed48161048c8161060c565b6002546040517f0e2e44e80000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff90911690630e2e44e89060240160006040518083038186803b1580156104f657600080fd5b505afa15801561050a573d6000803e3d6000fd5b505050508282604051602001610521929190610cc9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600088815260018352929092209192610571929101610cd9565b60405160208183030381529060405280519060200120146105e15760008481526001602052604090206105a5838583610dea565b50837f8cd835d1bfe29714c85ccb882e3d41c5ad29aa51270d6d157946a2bcb18d8b2484846040516105d8929190610f05565b60405180910390a25b50505050565b6000828152602081905260409020600101546106028161060c565b61030b8383610709565b61061681336107c0565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166103c45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556106ab3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156103c45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166103c4576107fe81610878565b610809836020610897565b60405160200161081a929190610f52565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526103b191600401610ba9565b60606102e073ffffffffffffffffffffffffffffffffffffffff831660145b606060006108a6836002611002565b6108b1906002611019565b67ffffffffffffffff8111156108c9576108c9610d6d565b6040519080825280601f01601f1916602001820160405280156108f3576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061092a5761092a61102c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061098d5761098d61102c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006109c9846002611002565b6109d4906001611019565b90505b6001811115610a71577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610a1557610a1561102c565b1a60f81b828281518110610a2b57610a2b61102c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93610a6a8161105b565b90506109d7565b508315610ada576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016103b1565b9392505050565b600060208284031215610af357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ada57600080fd5b600060208284031215610b3557600080fd5b5035919050565b60008060408385031215610b4f57600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff81168114610b7a57600080fd5b809150509250929050565b60005b83811015610ba0578181015183820152602001610b88565b50506000910152565b6020815260008251806020840152610bc8816040850160208701610b85565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600060408486031215610c0f57600080fd5b83359250602084013567ffffffffffffffff80821115610c2e57600080fd5b818601915086601f830112610c4257600080fd5b813581811115610c5157600080fd5b876020828501011115610c6357600080fd5b6020830194508093505050509250925092565b600181811c90821680610c8a57607f821691505b602082108103610cc3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8183823760009101908152919050565b6000808354610ce781610c76565b60018281168015610cff5760018114610d3257610d61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450610d61565b8760005260208060002060005b85811015610d585781548a820152908401908201610d3f565b50505082870194505b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561030b57600081815260208120601f850160051c81016020861015610dc35750805b601f850160051c820191505b81811015610de257828155600101610dcf565b505050505050565b67ffffffffffffffff831115610e0257610e02610d6d565b610e1683610e108354610c76565b83610d9c565b6000601f841160018114610e685760008515610e325750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610efe565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015610eb75786850135825560209485019460019092019101610e97565b5086821015610ef2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610f8a816017850160208801610b85565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351610fc7816028840160208801610b85565b01602801949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176102e0576102e0610fd3565b808201808211156102e0576102e0610fd3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008161106a5761106a610fd3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220ab183a074057998b29528540bda40b0f30c6a163d585749149f2ea0e2c953bc064736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/amo/IAuraStaking.sol/IAuraStaking.json b/apps/dapp/abi/contracts/interfaces/amo/IAuraStaking.sol/IAuraStaking.json new file mode 100644 index 000000000..4abcd7beb --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/amo/IAuraStaking.sol/IAuraStaking.json @@ -0,0 +1,384 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IAuraStaking", + "sourceName": "contracts/interfaces/amo/IAuraStaking.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RecoveredToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "rewardTokens", + "type": "address[]" + } + ], + "name": "RewardTokensSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "pId", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "rewards", + "type": "address" + } + ], + "name": "SetAuraPoolInfo", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "SetRewardsRecipient", + "type": "event" + }, + { + "inputs": [], + "name": "auraPoolInfo", + "outputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "rewards", + "type": "address" + }, + { + "internalType": "uint32", + "name": "pId", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "booster", + "outputs": [ + { + "internalType": "contract IAuraBooster", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bptToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "depositAndStake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "earned", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "claimExtras", + "type": "bool" + } + ], + "name": "getReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isAuraShutdown", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "rewardTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_pId", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "_rewards", + "type": "address" + } + ], + "name": "setAuraPoolInfo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_rewardTokens", + "type": "address[]" + } + ], + "name": "setRewardTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_recipeint", + "type": "address" + } + ], + "name": "setRewardsRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "showPositions", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "staked", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "earned", + "type": "uint256" + } + ], + "internalType": "struct IAuraStaking.Position", + "name": "position", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stakedBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "claim", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "withdrawAllAndUnwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "claim", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "withdrawAndUnwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/amo/IRamos.sol/IRamos.json b/apps/dapp/abi/contracts/interfaces/amo/IRamos.sol/IRamos.json new file mode 100644 index 000000000..d092b9a97 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/amo/IRamos.sol/IRamos.json @@ -0,0 +1,887 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IRamos", + "sourceName": "contracts/interfaces/amo/IRamos.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptAmount", + "type": "uint256" + } + ], + "name": "DepositAndStakeBptTokens", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "name": "FeeCollectorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenAdded", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenAdded", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptReceived", + "type": "uint256" + } + ], + "name": "LiquidityAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenReceived", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenReceived", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptRemoved", + "type": "uint256" + } + ], + "name": "LiquidityRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenRepaid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenFee", + "type": "uint256" + } + ], + "name": "RebalanceDownExit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptTokensStaked", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenFee", + "type": "uint256" + } + ], + "name": "RebalanceDownJoin", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "rebalanceJoinFeeBps", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rebalanceExitFeeBps", + "type": "uint256" + } + ], + "name": "RebalanceFeesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenRepaid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenFee", + "type": "uint256" + } + ], + "name": "RebalanceUpExit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptTokensStaked", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenFee", + "type": "uint256" + } + ], + "name": "RebalanceUpJoin", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RecoveredToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "cooldownSecs", + "type": "uint64" + } + ], + "name": "SetCooldown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptMaxAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenMaxAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenMaxAmount", + "type": "uint256" + } + ], + "name": "SetMaxRebalanceAmounts", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "poolHelper", + "type": "address" + } + ], + "name": "SetPoolHelper", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "deltaBps", + "type": "uint64" + } + ], + "name": "SetPostRebalanceDelta", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "belowTpi", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "aboveTpi", + "type": "uint64" + } + ], + "name": "SetRebalancePercentageBounds", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + } + ], + "name": "TokenVaultSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tpiOracle", + "type": "address" + } + ], + "name": "TpiOracleSet", + "type": "event" + }, + { + "inputs": [], + "name": "BPS_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.JoinPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "quoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bptTokensStaked", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "amoStaking", + "outputs": [ + { + "internalType": "contract IAuraStaking", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerPoolId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerVault", + "outputs": [ + { + "internalType": "contract IBalancerVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bptToken", + "outputs": [ + { + "internalType": "contract IBalancerBptToken", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cooldownSecs", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "useContractBalance", + "type": "bool" + } + ], + "name": "depositAndStakeBptTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastRebalanceTimeSecs", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxRebalanceAmounts", + "outputs": [ + { + "internalType": "uint256", + "name": "bpt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quoteToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolToken", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxRebalanceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "poolHelper", + "outputs": [ + { + "internalType": "contract IBalancerPoolHelper", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "positions", + "outputs": [ + { + "internalType": "uint256", + "name": "bptBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protoclTokenBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quoteTokenBalance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "postRebalanceDelta", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolTokenBalancerPoolIndex", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quoteToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minQuoteTokenAmountOut", + "type": "uint256" + } + ], + "name": "rebalanceDownExit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "protocolTokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBptOut", + "type": "uint256" + } + ], + "name": "rebalanceDownJoin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rebalanceFees", + "outputs": [ + { + "internalType": "uint128", + "name": "rebalanceJoinFeeBps", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "rebalanceExitFeeBps", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rebalancePercentageBoundLow", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rebalancePercentageBoundUp", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minProtocolTokenOut", + "type": "uint256" + } + ], + "name": "rebalanceUpExit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "quoteTokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBptOut", + "type": "uint256" + } + ], + "name": "rebalanceUpJoin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.ExitPoolRequest", + "name": "request", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "bptIn", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "quoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolTokenAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "rebalanceJoinFeeBps", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalanceExitFeeBps", + "type": "uint256" + } + ], + "name": "setRebalanceFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "vault", + "type": "address" + } + ], + "name": "setTokenVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tpiOracleAddress", + "type": "address" + } + ], + "name": "setTpiOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "tokenVault", + "outputs": [ + { + "internalType": "contract IRamosTokenVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tpiOracle", + "outputs": [ + { + "internalType": "contract ITreasuryPriceIndexOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryPriceIndex", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/amo/helpers/IBalancerPoolHelper.sol/IBalancerPoolHelper.json b/apps/dapp/abi/contracts/interfaces/amo/helpers/IBalancerPoolHelper.sol/IBalancerPoolHelper.json new file mode 100644 index 000000000..b472ee923 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/amo/helpers/IBalancerPoolHelper.sol/IBalancerPoolHelper.json @@ -0,0 +1,713 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IBalancerPoolHelper", + "sourceName": "contracts/interfaces/amo/helpers/IBalancerPoolHelper.sol", + "abi": [ + { + "inputs": [], + "name": "BPS_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PRICE_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "amo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slippageBps", + "type": "uint256" + } + ], + "name": "applySlippage", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerHelpers", + "outputs": [ + { + "internalType": "contract IBalancerHelpers", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerPoolId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balancerVault", + "outputs": [ + { + "internalType": "contract IBalancerVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bptToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "postRebalanceDelta", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "exitTokenIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "exitPoolToken", + "type": "address" + } + ], + "name": "exitPool", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getBalances", + "outputs": [ + { + "internalType": "uint256[]", + "name": "balances", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPairBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "protocolTokenBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quoteTokenBalance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "spotPriceBeforeScaled", + "type": "uint256" + } + ], + "name": "getSlippage", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSpotPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "spotPriceScaled", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceAboveTpi", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slippage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceAboveTpi", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceAboveTpiUpperBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "slippage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceBelowTpi", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceBelowTpi", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "isSpotPriceBelowTpiLowerBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBptOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "postRebalanceDelta", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "joinTokenIndex", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "joinPoolToken", + "type": "address" + } + ], + "name": "joinPool", + "outputs": [ + { + "internalType": "uint256", + "name": "bptIn", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "quoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slippageBps", + "type": "uint256" + } + ], + "name": "proportionalAddLiquidityQuote", + "outputs": [ + { + "internalType": "uint256", + "name": "protocolTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedBptAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBptAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.JoinPoolRequest", + "name": "requestData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bptAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "slippageBps", + "type": "uint256" + } + ], + "name": "proportionalRemoveLiquidityQuote", + "outputs": [ + { + "internalType": "uint256", + "name": "expectedProtocolTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedQuoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minProtocolTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minQuoteTokenAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.ExitPoolRequest", + "name": "requestData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "protocolToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolTokenIndexInBalancerPool", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quoteToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokensOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "willExitTakePriceAboveTpiUpperBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokensIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "willJoinTakePriceBelowTpiLowerBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokensOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundLow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "willQuoteTokenExitTakePriceBelowTpiLowerBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokensIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rebalancePercentageBoundUp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "treasuryPriceIndex", + "type": "uint256" + } + ], + "name": "willQuoteTokenJoinTakePriceAboveTpiUpperBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/amo/helpers/IRamosTokenVault.sol/IRamosTokenVault.json b/apps/dapp/abi/contracts/interfaces/amo/helpers/IRamosTokenVault.sol/IRamosTokenVault.json new file mode 100644 index 000000000..7b3349a11 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/amo/helpers/IRamosTokenVault.sol/IRamosTokenVault.json @@ -0,0 +1,73 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IRamosTokenVault", + "sourceName": "contracts/interfaces/amo/helpers/IRamosTokenVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrowProtocolToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrowQuoteToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "repayProtocolToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "repayQuoteToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/core/ITempleERC20Token.sol/ITempleERC20Token.json b/apps/dapp/abi/contracts/interfaces/core/ITempleERC20Token.sol/ITempleERC20Token.json new file mode 100644 index 000000000..e957e11c3 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/core/ITempleERC20Token.sol/ITempleERC20Token.json @@ -0,0 +1,243 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITempleERC20Token", + "sourceName": "contracts/interfaces/core/ITempleERC20Token.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/external/aura/IAuraBaseRewardPool.sol/IAuraBaseRewardPool.json b/apps/dapp/abi/contracts/interfaces/external/aura/IAuraBaseRewardPool.sol/IAuraBaseRewardPool.json new file mode 100644 index 000000000..0fdd3617c --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/external/aura/IAuraBaseRewardPool.sol/IAuraBaseRewardPool.json @@ -0,0 +1,223 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IAuraBaseRewardPool", + "sourceName": "contracts/interfaces/external/aura/IAuraBaseRewardPool.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "earned", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReward", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_claimExtras", + "type": "bool" + } + ], + "name": "getReward", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "stake", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stakeAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_for", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "stakeFor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "claim", + "type": "bool" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "claim", + "type": "bool" + } + ], + "name": "withdrawAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "claim", + "type": "bool" + } + ], + "name": "withdrawAllAndUnwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "claim", + "type": "bool" + } + ], + "name": "withdrawAndUnwrap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/external/aura/IAuraBooster.sol/IAuraBooster.json b/apps/dapp/abi/contracts/interfaces/external/aura/IAuraBooster.sol/IAuraBooster.json new file mode 100644 index 000000000..2b36bc396 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/external/aura/IAuraBooster.sol/IAuraBooster.json @@ -0,0 +1,253 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IAuraBooster", + "sourceName": "contracts/interfaces/external/aura/IAuraBooster.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "poolid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "poolid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_gauge", + "type": "address" + } + ], + "name": "claimRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_stake", + "type": "bool" + } + ], + "name": "deposit", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_stake", + "type": "bool" + } + ], + "name": "depositAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_feeToken", + "type": "address" + } + ], + "name": "earmarkFees", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + } + ], + "name": "earmarkRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isShutdown", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_pid", + "type": "uint256" + } + ], + "name": "poolInfo", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "lptoken", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "gauge", + "type": "address" + }, + { + "internalType": "address", + "name": "crvRewards", + "type": "address" + }, + { + "internalType": "address", + "name": "stash", + "type": "address" + }, + { + "internalType": "bool", + "name": "shutdown", + "type": "bool" + } + ], + "internalType": "struct IAuraBooster.PoolInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerBptToken.sol/IBalancerBptToken.json b/apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerBptToken.sol/IBalancerBptToken.json new file mode 100644 index 000000000..7ae5ba35e --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerBptToken.sol/IBalancerBptToken.json @@ -0,0 +1,207 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IBalancerBptToken", + "sourceName": "contracts/interfaces/external/balancer/IBalancerBptToken.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getActualSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerHelpers.sol/IBalancerHelpers.json b/apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerHelpers.sol/IBalancerHelpers.json new file mode 100644 index 000000000..7ab4fc422 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerHelpers.sol/IBalancerHelpers.json @@ -0,0 +1,133 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IBalancerHelpers", + "sourceName": "contracts/interfaces/external/balancer/IBalancerHelpers.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.ExitPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "queryExit", + "outputs": [ + { + "internalType": "uint256", + "name": "bptIn", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "amountsOut", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.JoinPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "queryJoin", + "outputs": [ + { + "internalType": "uint256", + "name": "bptOut", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerVault.sol/IBalancerVault.json b/apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerVault.sol/IBalancerVault.json new file mode 100644 index 000000000..651d4d477 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/external/balancer/IBalancerVault.sol/IBalancerVault.json @@ -0,0 +1,233 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IBalancerVault", + "sourceName": "contracts/interfaces/external/balancer/IBalancerVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "enum IBalancerVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "assetInIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "assetOutIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IBalancerVault.BatchSwapStep[]", + "name": "swaps", + "type": "tuple[]" + }, + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.FundManagement", + "name": "funds", + "type": "tuple" + }, + { + "internalType": "int256[]", + "name": "limits", + "type": "int256[]" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "batchSwap", + "outputs": [ + { + "internalType": "int256[]", + "name": "assetDeltas", + "type": "int256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.ExitPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "exitPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + } + ], + "name": "getPoolTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "balances", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "lastChangeBlock", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.JoinPoolRequest", + "name": "request", + "type": "tuple" + } + ], + "name": "joinPool", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoDaiJoinLike.sol/IMakerDaoDaiJoinLike.json b/apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoDaiJoinLike.sol/IMakerDaoDaiJoinLike.json new file mode 100644 index 000000000..0a8937899 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoDaiJoinLike.sol/IMakerDaoDaiJoinLike.json @@ -0,0 +1,73 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IMakerDaoDaiJoinLike", + "sourceName": "contracts/interfaces/external/makerDao/IMakerDaoDaiJoinLike.sol", + "abi": [ + { + "inputs": [], + "name": "dai", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "exit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "join", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vat", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoPotLike.sol/IMakerDaoPotLike.json b/apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoPotLike.sol/IMakerDaoPotLike.json new file mode 100644 index 000000000..ceaaefd31 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoPotLike.sol/IMakerDaoPotLike.json @@ -0,0 +1,108 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IMakerDaoPotLike", + "sourceName": "contracts/interfaces/external/makerDao/IMakerDaoPotLike.sol", + "abi": [ + { + "inputs": [], + "name": "chi", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "drip", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dsr", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "exit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "join", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "pie", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rho", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoVatLike.sol/IMakerDaoVatLike.json b/apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoVatLike.sol/IMakerDaoVatLike.json new file mode 100644 index 000000000..a1060e0f7 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/external/makerDao/IMakerDaoVatLike.sol/IMakerDaoVatLike.json @@ -0,0 +1,43 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IMakerDaoVatLike", + "sourceName": "contracts/interfaces/external/makerDao/IMakerDaoVatLike.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "dai", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "hope", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/ITempleDebtToken.sol/ITempleDebtToken.json b/apps/dapp/abi/contracts/interfaces/v2/ITempleDebtToken.sol/ITempleDebtToken.json new file mode 100644 index 000000000..d233fcd03 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/ITempleDebtToken.sol/ITempleDebtToken.json @@ -0,0 +1,1062 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITempleDebtToken", + "sourceName": "contracts/interfaces/v2/ITempleDebtToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "CannotMintOrBurn", + "type": "error" + }, + { + "inputs": [], + "name": "NonTransferrable", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint96", + "name": "rate", + "type": "uint96" + } + ], + "name": "BaseInterestRateSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "debtor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "principal", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "baseInterest", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "riskPremiumInterest", + "type": "uint128" + } + ], + "name": "DebtorBalance", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "RemovedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "debtor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "rate", + "type": "uint96" + } + ], + "name": "RiskPremiumInterestRateSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseCheckpoint", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseCheckpointTime", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "debt", + "type": "uint128" + } + ], + "name": "baseDebtToShares", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseRate", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseShares", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "shares", + "type": "uint128" + } + ], + "name": "baseSharesToDebt", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_burnAmount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "burnedAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + } + ], + "name": "burnAll", + "outputs": [ + { + "internalType": "uint256", + "name": "burnedAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointBaseInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "debtor", + "type": "address" + } + ], + "name": "checkpointDebtorInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_debtors", + "type": "address[]" + } + ], + "name": "checkpointDebtorsInterest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + } + ], + "name": "currentDebtOf", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "riskPremiumInterest", + "type": "uint256" + } + ], + "internalType": "struct ITempleDebtToken.DebtOwed", + "name": "debtOwed", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_debtors", + "type": "address[]" + } + ], + "name": "currentDebtsOf", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "riskPremiumInterest", + "type": "uint256" + } + ], + "internalType": "struct ITempleDebtToken.DebtOwed[]", + "name": "debtsOwed", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentTotalDebt", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "riskPremiumInterest", + "type": "uint256" + } + ], + "internalType": "struct ITempleDebtToken.DebtOwed", + "name": "debtOwed", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "debtors", + "outputs": [ + { + "internalType": "uint128", + "name": "principal", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "baseShares", + "type": "uint128" + }, + { + "internalType": "uint96", + "name": "rate", + "type": "uint96" + }, + { + "internalType": "uint128", + "name": "checkpoint", + "type": "uint128" + }, + { + "internalType": "uint32", + "name": "checkpointTime", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "estimatedTotalRiskPremiumInterest", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "minters", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint96", + "name": "_rate", + "type": "uint96" + } + ], + "name": "setBaseInterestRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_rate", + "type": "uint96" + } + ], + "name": "setRiskPremiumInterestRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalPrincipal", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/ITreasuryPriceIndexOracle.sol/ITreasuryPriceIndexOracle.json b/apps/dapp/abi/contracts/interfaces/v2/ITreasuryPriceIndexOracle.sol/ITreasuryPriceIndexOracle.json new file mode 100644 index 000000000..3165a4107 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/ITreasuryPriceIndexOracle.sol/ITreasuryPriceIndexOracle.json @@ -0,0 +1,455 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITreasuryPriceIndexOracle", + "sourceName": "contracts/interfaces/v2/ITreasuryPriceIndexOracle.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint96", + "name": "oldTpi", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "newTpi", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "maxDelta", + "type": "uint256" + } + ], + "name": "BreachedMaxTpiDelta", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "maxDelta", + "type": "uint256" + } + ], + "name": "MaxTreasuryPriceIndexDeltaSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "cooldownSecs", + "type": "uint32" + } + ], + "name": "TpiCooldownSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint96", + "name": "oldTpi", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "newTpi", + "type": "uint96" + } + ], + "name": "TreasuryPriceIndexSet", + "type": "event" + }, + { + "inputs": [], + "name": "TPI_DECIMALS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "maxTreasuryPriceIndexDelta", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "maxDelta", + "type": "uint256" + } + ], + "name": "setMaxTreasuryPriceIndexDelta", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "cooldownSecs", + "type": "uint32" + } + ], + "name": "setTpiCooldown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint96", + "name": "value", + "type": "uint96" + } + ], + "name": "setTreasuryPriceIndex", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "tpiData", + "outputs": [ + { + "internalType": "uint96", + "name": "currentTpi", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "previousTpi", + "type": "uint96" + }, + { + "internalType": "uint32", + "name": "lastUpdatedAt", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "cooldownSecs", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryPriceIndex", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/ITreasuryReservesVault.sol/ITreasuryReservesVault.json b/apps/dapp/abi/contracts/interfaces/v2/ITreasuryReservesVault.sol/ITreasuryReservesVault.json new file mode 100644 index 000000000..a2c089831 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/ITreasuryReservesVault.sol/ITreasuryReservesVault.json @@ -0,0 +1,1413 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITreasuryReservesVault", + "sourceName": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "abi": [ + { + "inputs": [], + "name": "AlreadyEnabled", + "type": "error" + }, + { + "inputs": [], + "name": "BorrowPaused", + "type": "error" + }, + { + "inputs": [], + "name": "BorrowTokenNotEnabled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "available", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "DebtCeilingBreached", + "type": "error" + }, + { + "inputs": [], + "name": "NotShuttingDown", + "type": "error" + }, + { + "inputs": [], + "name": "RepaysPaused", + "type": "error" + }, + { + "inputs": [], + "name": "StrategyIsShutdown", + "type": "error" + }, + { + "inputs": [], + "name": "StrategyNotEnabled", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "BorrowTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "baseStrategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseStrategyWithdrawalBuffer", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseStrategyDepositThreshold", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "dToken", + "type": "address" + } + ], + "name": "BorrowTokenSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oldDebtCeiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "DebtCeilingUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "borrow", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "repay", + "type": "bool" + } + ], + "name": "GlobalPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Repay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + } + ], + "name": "StrategyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "credit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "debt", + "type": "uint256" + } + ], + "name": "StrategyCreditAndDebtBalance", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isShuttingDown", + "type": "bool" + } + ], + "name": "StrategyIsShuttingDownSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "borrow", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "repay", + "type": "bool" + } + ], + "name": "StrategyPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "StrategyRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "outstandingCredit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "outstandingDebt", + "type": "uint256" + } + ], + "name": "StrategyShutdownCreditAndDebt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tpiOracle", + "type": "address" + } + ], + "name": "TpiOracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "oldThreshold", + "type": "int256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "newThreshold", + "type": "int256" + } + ], + "name": "UnderperformingEquityThresholdUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "debtCeiling", + "type": "tuple[]" + } + ], + "name": "addStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "availableForStrategyToBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrowMax", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "borrowTokens", + "outputs": [ + { + "internalType": "contract ITempleBaseStrategy", + "name": "baseStrategy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "baseStrategyWithdrawalBuffer", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseStrategyDepositThreshold", + "type": "uint256" + }, + { + "internalType": "contract ITempleDebtToken", + "name": "dToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "borrowTokensList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "globalBorrowPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "globalRepaysPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "removeBorrowToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "repay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "repayAll", + "outputs": [ + { + "internalType": "uint256", + "name": "amountRepaid", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "baseStrategy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "baseStrategyWithdrawalBuffer", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseStrategyDepositThreshold", + "type": "uint256" + }, + { + "internalType": "address", + "name": "dToken", + "type": "address" + } + ], + "name": "setBorrowToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "borrow", + "type": "bool" + }, + { + "internalType": "bool", + "name": "repays", + "type": "bool" + } + ], + "name": "setGlobalPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "setStrategyDebtCeiling", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "bool", + "name": "isShuttingDown", + "type": "bool" + } + ], + "name": "setStrategyIsShuttingDown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "bool", + "name": "borrow", + "type": "bool" + }, + { + "internalType": "bool", + "name": "repays", + "type": "bool" + } + ], + "name": "setStrategyPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + } + ], + "name": "setStrategyUnderperformingThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tpiOracleAddress", + "type": "address" + } + ], + "name": "setTpiOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "shutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "strategies", + "outputs": [ + { + "internalType": "bool", + "name": "borrowPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "repaysPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isShuttingDown", + "type": "bool" + }, + { + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategiesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategyAddr", + "type": "address" + } + ], + "name": "strategyBalanceSheet", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "manualAdjustments", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "dTokenBalances", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "dTokenCreditBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "strategyDebtCeiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "strategyDetails", + "outputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "bool", + "name": "borrowPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "repaysPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isShuttingDown", + "type": "bool" + }, + { + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "debtCeiling", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "strategyEnabledBorrowTokens", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "strategyTokenCredits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "totalAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tpiOracle", + "outputs": [ + { + "internalType": "contract ITreasuryPriceIndexOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryPriceIndex", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20[]", + "name": "enableBorrowTokens", + "type": "address[]" + }, + { + "internalType": "contract IERC20[]", + "name": "disableBorrowTokens", + "type": "address[]" + } + ], + "name": "updateStrategyEnabledBorrowTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/access/ITempleElevatedAccess.sol/ITempleElevatedAccess.json b/apps/dapp/abi/contracts/interfaces/v2/access/ITempleElevatedAccess.sol/ITempleElevatedAccess.json new file mode 100644 index 000000000..0a61ec758 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/access/ITempleElevatedAccess.sol/ITempleElevatedAccess.json @@ -0,0 +1,283 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITempleElevatedAccess", + "sourceName": "contracts/interfaces/v2/access/ITempleElevatedAccess.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreaker.sol/ITempleCircuitBreaker.json b/apps/dapp/abi/contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreaker.sol/ITempleCircuitBreaker.json new file mode 100644 index 000000000..98f665b11 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreaker.sol/ITempleCircuitBreaker.json @@ -0,0 +1,301 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITempleCircuitBreaker", + "sourceName": "contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreaker.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "preCheck", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreakerProxy.sol/ITempleCircuitBreakerProxy.json b/apps/dapp/abi/contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreakerProxy.sol/ITempleCircuitBreakerProxy.json new file mode 100644 index 000000000..cf59d4915 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreakerProxy.sol/ITempleCircuitBreakerProxy.json @@ -0,0 +1,453 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITempleCircuitBreakerProxy", + "sourceName": "contracts/interfaces/v2/circuitBreaker/ITempleCircuitBreakerProxy.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "circuitBreaker", + "type": "address" + } + ], + "name": "CircuitBreakerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "identifierString", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + } + ], + "name": "IdentifierForCallerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "callerToIdentifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "circuitBreakers", + "outputs": [ + { + "internalType": "contract ITempleCircuitBreaker", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "identifiers", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "preCheck", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "circuitBreaker", + "type": "address" + } + ], + "name": "setCircuitBreaker", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "string", + "name": "identifierString", + "type": "string" + } + ], + "name": "setIdentifierForCaller", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/interestRate/IInterestRateModel.sol/IInterestRateModel.json b/apps/dapp/abi/contracts/interfaces/v2/interestRate/IInterestRateModel.sol/IInterestRateModel.json new file mode 100644 index 000000000..48e8a64ab --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/interestRate/IInterestRateModel.sol/IInterestRateModel.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IInterestRateModel", + "sourceName": "contracts/interfaces/v2/interestRate/IInterestRateModel.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "utilizationRatio", + "type": "uint256" + } + ], + "name": "calculateInterestRate", + "outputs": [ + { + "internalType": "uint96", + "name": "interestRate", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol/IThresholdSafeGuard.json b/apps/dapp/abi/contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol/IThresholdSafeGuard.json new file mode 100644 index 000000000..8682b18b2 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol/IThresholdSafeGuard.json @@ -0,0 +1,278 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IThresholdSafeGuard", + "sourceName": "contracts/interfaces/v2/safeGuards/IThresholdSafeGuard.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "found", + "type": "uint256" + } + ], + "name": "DynamicSignatureThresholdNotMet", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidExecutor", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "DefaultSignaturesThresholdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "DisableGuardChecksSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "EthTransferThresholdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "functionSignature", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "FunctionThresholdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "executor", + "type": "address" + } + ], + "name": "SafeTxExecutorAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "executor", + "type": "address" + } + ], + "name": "SafeTxExecutorRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "txHash", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "name": "checkAfterExecution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "safeTxGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "gasToken", + "type": "address" + }, + { + "internalType": "address payable", + "name": "refundReceiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "signatures", + "type": "bytes" + }, + { + "internalType": "address", + "name": "msgSender", + "type": "address" + } + ], + "name": "checkTransaction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "defaultSignaturesThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "disableGuardChecks", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + } + ], + "name": "ethTransferThresholds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSignature", + "type": "bytes4" + } + ], + "name": "functionThresholds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/strategies/ITempleBaseStrategy.sol/ITempleBaseStrategy.json b/apps/dapp/abi/contracts/interfaces/v2/strategies/ITempleBaseStrategy.sol/ITempleBaseStrategy.json new file mode 100644 index 000000000..7f984dd47 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/strategies/ITempleBaseStrategy.sol/ITempleBaseStrategy.json @@ -0,0 +1,81 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITempleBaseStrategy", + "sourceName": "contracts/interfaces/v2/strategies/ITempleBaseStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "borrowAndDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "latestAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "trvDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestedAmount", + "type": "uint256" + } + ], + "name": "trvWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "amountWithdrawn", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/strategies/ITempleStrategy.sol/ITempleStrategy.json b/apps/dapp/abi/contracts/interfaces/v2/strategies/ITempleStrategy.sol/ITempleStrategy.json new file mode 100644 index 000000000..91c4e4e75 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/strategies/ITempleStrategy.sol/ITempleStrategy.json @@ -0,0 +1,665 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITempleStrategy", + "sourceName": "contracts/interfaces/v2/strategies/ITempleStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "expected", + "type": "string" + }, + { + "internalType": "string", + "name": "actual", + "type": "string" + } + ], + "name": "InvalidVersion", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "OnlyTreasuryReserveVault", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "name": "AssetBalancesCheckpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "ManualAdjustmentsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Shutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenAllowanceSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trv", + "type": "address" + } + ], + "name": "TreasuryReservesVaultSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "name": "automatedShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "debtCeilingUpdated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "latestAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manualAdjustments", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "populateParamsData", + "type": "bytes" + } + ], + "name": "populateShutdownData", + "outputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "setManualAdjustments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setTokenAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trv", + "type": "address" + } + ], + "name": "setTreasuryReservesVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/strategies/ITlcStrategy.sol/ITlcStrategy.json b/apps/dapp/abi/contracts/interfaces/v2/strategies/ITlcStrategy.sol/ITlcStrategy.json new file mode 100644 index 000000000..39b8719f8 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/strategies/ITlcStrategy.sol/ITlcStrategy.json @@ -0,0 +1,683 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITlcStrategy", + "sourceName": "contracts/interfaces/v2/strategies/ITlcStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "expected", + "type": "string" + }, + { + "internalType": "string", + "name": "actual", + "type": "string" + } + ], + "name": "InvalidVersion", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "OnlyTreasuryReserveVault", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "name": "AssetBalancesCheckpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "ManualAdjustmentsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Shutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenAllowanceSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trv", + "type": "address" + } + ], + "name": "TreasuryReservesVaultSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "name": "automatedShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "debtCeilingUpdated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "fundFromTrv", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "latestAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manualAdjustments", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "populateParamsData", + "type": "bytes" + } + ], + "name": "populateShutdownData", + "outputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "setManualAdjustments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setTokenAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trv", + "type": "address" + } + ], + "name": "setTreasuryReservesVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITempleLineOfCredit.sol/ITempleLineOfCredit.json b/apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITempleLineOfCredit.sol/ITempleLineOfCredit.json new file mode 100644 index 000000000..89fdeb932 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITempleLineOfCredit.sol/ITempleLineOfCredit.json @@ -0,0 +1,828 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITempleLineOfCredit", + "sourceName": "contracts/interfaces/v2/templeLineOfCredit/ITempleLineOfCredit.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "totalDebtAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "ExceededBorrowedAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateralAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateralValue", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentDaiDebt", + "type": "uint256" + } + ], + "name": "ExceededMaxLtv", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "InsufficientAmount", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "amount", + "type": "uint128" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "BorrowPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fundedBy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "collateralAmount", + "type": "uint128" + } + ], + "name": "CollateralAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "collateralAmount", + "type": "uint128" + } + ], + "name": "CollateralRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "interestRateModel", + "type": "address" + } + ], + "name": "InterestRateModelSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint96", + "name": "newInterestRate", + "type": "uint96" + } + ], + "name": "InterestRateUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "collateralSeized", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "collateralValue", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "daiDebtWiped", + "type": "uint128" + } + ], + "name": "Liquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "LiquidationsPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "maxLtvRatio", + "type": "uint256" + } + ], + "name": "MaxLtvRatioSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint128", + "name": "amount", + "type": "uint128" + } + ], + "name": "MinBorrowAmountSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fundedBy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "repayAmount", + "type": "uint128" + } + ], + "name": "Repay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "treasuryReservesVault", + "type": "address" + } + ], + "name": "TlcStrategySet", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "accountData", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "collateral", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "debtCheckpoint", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "interestAccumulator", + "type": "uint256" + } + ], + "internalType": "struct ITlcDataTypes.AccountData", + "name": "data", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "accountPosition", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "collateral", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "currentDebt", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "maxBorrow", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "healthFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "loanToValueRatio", + "type": "uint256" + } + ], + "internalType": "struct ITlcDataTypes.AccountPosition", + "name": "position", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "collateralAmount", + "type": "uint128" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "addCollateral", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + } + ], + "name": "batchLiquidate", + "outputs": [ + { + "internalType": "uint128", + "name": "totalCollateralClaimed", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "totalDaiDebtWiped", + "type": "uint128" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "circuitBreakerProxy", + "outputs": [ + { + "internalType": "contract ITempleCircuitBreakerProxy", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + } + ], + "name": "computeLiquidity", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "hasExceededMaxLtv", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "collateral", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "collateralValue", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "currentDebt", + "type": "uint128" + } + ], + "internalType": "struct ITlcDataTypes.LiquidationStatus[]", + "name": "status", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daiToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "debtTokenDetails", + "outputs": [ + { + "components": [ + { + "internalType": "uint96", + "name": "maxLtvRatio", + "type": "uint96" + }, + { + "internalType": "contract IInterestRateModel", + "name": "interestRateModel", + "type": "address" + }, + { + "internalType": "bool", + "name": "borrowsPaused", + "type": "bool" + } + ], + "internalType": "struct ITlcDataTypes.DebtTokenConfig", + "name": "config", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "interestAccumulatorUpdatedAt", + "type": "uint32" + }, + { + "internalType": "uint128", + "name": "totalDebt", + "type": "uint128" + }, + { + "internalType": "uint96", + "name": "interestRate", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "interestAccumulator", + "type": "uint256" + } + ], + "internalType": "struct ITlcDataTypes.DebtTokenData", + "name": "data", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "liquidationsPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minBorrowAmount", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "refreshInterestRates", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "removeCollateral", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "repayAmount", + "type": "uint128" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "repay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "repayAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "setBorrowPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "interestRateModel", + "type": "address" + } + ], + "name": "setInterestRateModel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "setLiquidationsPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "maxLtvRatio", + "type": "uint256" + } + ], + "name": "setMaxLtvRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + } + ], + "name": "setMinBorrowAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tlcStrategy", + "type": "address" + } + ], + "name": "setTlcStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tlcStrategy", + "outputs": [ + { + "internalType": "contract ITlcStrategy", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalDebtPosition", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "utilizationRatio", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalDebt", + "type": "uint256" + } + ], + "internalType": "struct ITlcDataTypes.TotalDebtPosition", + "name": "daiPosition", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITlcDataTypes.sol/ITlcDataTypes.json b/apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITlcDataTypes.sol/ITlcDataTypes.json new file mode 100644 index 000000000..60c43a27a --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITlcDataTypes.sol/ITlcDataTypes.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITlcDataTypes", + "sourceName": "contracts/interfaces/v2/templeLineOfCredit/ITlcDataTypes.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITlcEventsAndErrors.sol/ITlcEventsAndErrors.json b/apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITlcEventsAndErrors.sol/ITlcEventsAndErrors.json new file mode 100644 index 000000000..9c399a8f7 --- /dev/null +++ b/apps/dapp/abi/contracts/interfaces/v2/templeLineOfCredit/ITlcEventsAndErrors.sol/ITlcEventsAndErrors.json @@ -0,0 +1,297 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITlcEventsAndErrors", + "sourceName": "contracts/interfaces/v2/templeLineOfCredit/ITlcEventsAndErrors.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "totalDebtAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "ExceededBorrowedAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateralAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateralValue", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentDaiDebt", + "type": "uint256" + } + ], + "name": "ExceededMaxLtv", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "InsufficientAmount", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "amount", + "type": "uint128" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "BorrowPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fundedBy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "collateralAmount", + "type": "uint128" + } + ], + "name": "CollateralAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "collateralAmount", + "type": "uint128" + } + ], + "name": "CollateralRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "interestRateModel", + "type": "address" + } + ], + "name": "InterestRateModelSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint96", + "name": "newInterestRate", + "type": "uint96" + } + ], + "name": "InterestRateUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "collateralSeized", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "collateralValue", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "daiDebtWiped", + "type": "uint128" + } + ], + "name": "Liquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "LiquidationsPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "maxLtvRatio", + "type": "uint256" + } + ], + "name": "MaxLtvRatioSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint128", + "name": "amount", + "type": "uint128" + } + ], + "name": "MinBorrowAmountSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fundedBy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "repayAmount", + "type": "uint128" + } + ], + "name": "Repay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "treasuryReservesVault", + "type": "address" + } + ], + "name": "TlcStrategySet", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/util/ABDKMath64x64.sol/ABDKMath64x64.json b/apps/dapp/abi/contracts/util/ABDKMath64x64.sol/ABDKMath64x64.json new file mode 100644 index 000000000..89dc15a22 --- /dev/null +++ b/apps/dapp/abi/contracts/util/ABDKMath64x64.sol/ABDKMath64x64.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ABDKMath64x64", + "sourceName": "contracts/util/ABDKMath64x64.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220880abaafcdc1b646da8920875c22ca13ffaca06dd9445c0b21feeae57a3f7d9364736f6c63430008130033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220880abaafcdc1b646da8920875c22ca13ffaca06dd9445c0b21feeae57a3f7d9364736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/util/ABDKMathQuad.sol/ABDKMathQuad.json b/apps/dapp/abi/contracts/util/ABDKMathQuad.sol/ABDKMathQuad.json new file mode 100644 index 000000000..c10425cbc --- /dev/null +++ b/apps/dapp/abi/contracts/util/ABDKMathQuad.sol/ABDKMathQuad.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ABDKMathQuad", + "sourceName": "contracts/util/ABDKMathQuad.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081613c39755d668aed94ea32af9fc09b2b928f05f528f56d64ed317233c21ea064736f6c63430008130033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081613c39755d668aed94ea32af9fc09b2b928f05f528f56d64ed317233c21ea064736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/TempleDebtToken.sol/TempleDebtToken.json b/apps/dapp/abi/contracts/v2/TempleDebtToken.sol/TempleDebtToken.json new file mode 100644 index 000000000..d0d485629 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/TempleDebtToken.sol/TempleDebtToken.json @@ -0,0 +1,1201 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleDebtToken", + "sourceName": "contracts/v2/TempleDebtToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_baseInterestRate", + "type": "uint96" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "CannotMintOrBurn", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "NonTransferrable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv18_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denominator", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "UD60x18", + "name": "x", + "type": "uint256" + } + ], + "name": "PRBMath_UD60x18_Exp2_InputTooBig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "UD60x18", + "name": "x", + "type": "uint256" + } + ], + "name": "PRBMath_UD60x18_Exp_InputTooBig", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint96", + "name": "rate", + "type": "uint96" + } + ], + "name": "BaseInterestRateSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "debtor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "principal", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "baseInterest", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "riskPremiumInterest", + "type": "uint128" + } + ], + "name": "DebtorBalance", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "RemovedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "debtor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "rate", + "type": "uint96" + } + ], + "name": "RiskPremiumInterestRateSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseCheckpoint", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseCheckpointTime", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "debt", + "type": "uint128" + } + ], + "name": "baseDebtToShares", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseRate", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseShares", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "shares", + "type": "uint128" + } + ], + "name": "baseSharesToDebt", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_burnAmount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "burnedAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + } + ], + "name": "burnAll", + "outputs": [ + { + "internalType": "uint256", + "name": "burnedAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointBaseInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "debtor", + "type": "address" + } + ], + "name": "checkpointDebtorInterest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_debtors", + "type": "address[]" + } + ], + "name": "checkpointDebtorsInterest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + } + ], + "name": "currentDebtOf", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "riskPremiumInterest", + "type": "uint256" + } + ], + "internalType": "struct ITempleDebtToken.DebtOwed", + "name": "debtOwed", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_debtors", + "type": "address[]" + } + ], + "name": "currentDebtsOf", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "riskPremiumInterest", + "type": "uint256" + } + ], + "internalType": "struct ITempleDebtToken.DebtOwed[]", + "name": "debtsOwed", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentTotalDebt", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "principal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "riskPremiumInterest", + "type": "uint256" + } + ], + "internalType": "struct ITempleDebtToken.DebtOwed", + "name": "debtOwed", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "debtors", + "outputs": [ + { + "internalType": "uint128", + "name": "principal", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "baseShares", + "type": "uint128" + }, + { + "internalType": "uint96", + "name": "rate", + "type": "uint96" + }, + { + "internalType": "uint128", + "name": "checkpoint", + "type": "uint128" + }, + { + "internalType": "uint32", + "name": "checkpointTime", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "estimatedTotalRiskPremiumInterest", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "minters", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint96", + "name": "_rate", + "type": "uint96" + } + ], + "name": "setBaseInterestRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_debtor", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_rate", + "type": "uint96" + } + ], + "name": "setRiskPremiumInterestRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalPrincipal", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200478d3803806200478d833981016040819052620000349162000229565b82826001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556005620000f386826200036a565b5060066200010285826200036a565b50600780546001600160601b03929092166001600160801b0319909216919091176c010000000000000000000000004263ffffffff1602179055506200043692505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200016f57600080fd5b81516001600160401b03808211156200018c576200018c62000147565b604051601f8301601f19908116603f01168101908282118183101715620001b757620001b762000147565b81604052838152602092508683858801011115620001d457600080fd5b600091505b83821015620001f85785820183015181830184015290820190620001d9565b600093810190920192909252949350505050565b80516001600160a01b03811681146200022457600080fd5b919050565b600080600080600060a086880312156200024257600080fd5b85516001600160401b03808211156200025a57600080fd5b6200026889838a016200015d565b965060208801519150808211156200027f57600080fd5b506200028e888289016200015d565b9450506200029f604087016200020c565b9250620002af606087016200020c565b60808701519092506001600160601b0381168114620002cd57600080fd5b809150509295509295909350565b600181811c90821680620002f057607f821691505b6020821081036200031157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200036557600081815260208120601f850160051c81016020861015620003405750805b601f850160051c820191505b8181101562000361578281556001016200034c565b5050505b505050565b81516001600160401b0381111562000386576200038662000147565b6200039e81620003978454620002db565b8462000317565b602080601f831160018114620003d65760008415620003bd5750858301515b600019600386901b1c1916600185901b17855562000361565b600085815260208120601f198616915b828110156200040757888601518255948401946001909101908401620003e6565b5085821015620004265787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61434780620004466000396000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80637e9d2ac111610191578063a9059cbb116100e3578063c34c08e511610097578063dd62ed3e11610071578063dd62ed3e14610800578063e3141b8914610816578063f46eccc41461082957600080fd5b8063c34c08e51461079f578063d9a349c1146107bf578063daeccc79146107d257600080fd5b8063b11e5391116100c8578063b11e539114610771578063be4eba7814610784578063bfccf0ec1461078c57600080fd5b8063a9059cbb1461033f578063aa6be3031461067f57600080fd5b806395d89b41116101455780639a973fa21161011f5780639a973fa2146106515780639dc29fac14610659578063a7229fd91461066c57600080fd5b806395d89b4114610623578063983089e31461062b578063983b2d561461063e57600080fd5b806381a7627e1161017657806381a7627e146105d857806381ef27be146105eb5780638d61b7391461060757600080fd5b80637e9d2ac1146105bd5780638112c4af146105d057600080fd5b806323b872dd1161024a57806335172a89116101fe5780634b1533b2116101d85780634b1533b21461054157806354fd4d501461057157806370a08231146105aa57600080fd5b806335172a89146104b457806338a63183146104e957806340c10f191461052e57600080fd5b80633092afd51161022f5780633092afd514610467578063313ce5671461047a578063327efe611461049457600080fd5b806323b872dd146104085780632cf1873d1461041657600080fd5b80630c610cb8116102ac57806318160ddd1161028657806318160ddd146103b55780631f211405146103cb5780631f68f20a146103d357600080fd5b80630c610cb8146103755780630d2f6e2b146103885780631810fe7f146103a857600080fd5b806307f184f1116102dd57806307f184f11461032c578063095ea7b31461033f5780630bf000391461036257600080fd5b8063032ef901146102f957806306fdde031461030e575b600080fd5b61030c610307366004613ca4565b61084c565b005b6103166108fb565b6040516103239190613ce5565b60405180910390f35b61030c61033a366004613d5f565b610989565b61035261034d366004613d7a565b610ac1565b6040519015158152602001610323565b61030c610370366004613da4565b610af5565b61030c610383366004613e35565b610cce565b61039b610396366004613da4565b610dac565b6040516103239190613e50565b6003546103529060ff1681565b6103bd610f75565b604051908152602001610323565b61030c610fbe565b6007546103eb906bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff9091168152602001610323565b61035261034d366004613eb2565b6007546104469070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff9091168152602001610323565b61030c610475366004613d5f565b6110dd565b610482601281565b60405160ff9091168152602001610323565b6104a76104a2366004613d5f565b6111b5565b6040516103239190613eee565b6007546104d4906c01000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610323565b6000546105099073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610323565b61030c61053c366004613d7a565b611252565b6008546104469070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b60408051808201909152600581527f312e302e300000000000000000000000000000000000000000000000000000006020820152610316565b6103bd6105b8366004613d5f565b611591565b6103bd6105cb366004613d5f565b6115e6565b61030c6117cc565b6104466105e6366004613f0f565b61190c565b600854610446906fffffffffffffffffffffffffffffffff1681565b600954610446906fffffffffffffffffffffffffffffffff1681565b610316611935565b610446610639366004613f0f565b611942565b61030c61064c366004613d5f565b611964565b6104a7611a3f565b6103bd610667366004613d7a565b611ae1565b61030c61067a366004613eb2565b611d20565b61071a61068d366004613d5f565b600a60205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8083169270010000000000000000000000000000000090048116916bffffffffffffffffffffffff8116916c01000000000000000000000000820416907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1685565b604080516fffffffffffffffffffffffffffffffff968716815294861660208601526bffffffffffffffffffffffff9093169284019290925292909216606082015263ffffffff909116608082015260a001610323565b61030c61077f366004613f41565b611e11565b6103bd611f3b565b61030c61079a366004613f74565b611f5f565b6001546105099073ffffffffffffffffffffffffffffffffffffffff1681565b61030c6107cd366004613d5f565b612166565b6103526107e036600461402a565b600260209081526000928352604080842090915290825290205460ff1681565b6103bd61080e366004614054565b600092915050565b6103bd610824366004613d5f565b6122ab565b610352610837366004613d5f565b600b6020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461089d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600580546109089061407e565b80601f01602080910402602001604051908101604052809291908181526020018280546109349061407e565b80156109815780601f1061095657610100808354040283529160200191610981565b820191906000526020600020905b81548152906001019060200180831161096457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109da576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a27576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60006040517fbf9e1a7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610aff612302565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290529192508084815b81811015610c6757600a6000898984818110610b5c57610b5c6140cb565b9050602002016020810190610b719190613d5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350610bb9868560016123ae565b9450846080015183610bcb9190614129565b60608601516001860180546bffffffffffffffffffffffff166c010000000000000000000000006fffffffffffffffffffffffffffffffff909316929092027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c01000000000000000000000000000000000000000000000000000000004263ffffffff16021790559250610c6081614159565b9050610b3e565b5060098054839190600090610c8f9084906fffffffffffffffffffffffffffffffff16614129565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050505050565b610cfc336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b610d32576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d3a612302565b50600780547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff83169081179091556040519081527f487325d985e5a56d2f4c59496d1f6bdf37b074c0f2c22e3eba20233e060684da9060200160405180910390a150565b60606000610db86124be565b9050828067ffffffffffffffff811115610dd457610dd4614191565b604051908082528060200260200182016040528015610e2957816020015b610e1660405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610df25790505b506040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290529194505b82811015610f6b57610ede84600a60008a8a86818110610e8857610e886140cb565b9050602002016020810190610e9d9190613d5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016123ae565b9150604051806060016040528083600001516fffffffffffffffffffffffffffffffff16815260200183602001516fffffffffffffffffffffffffffffffff16815260200183606001516fffffffffffffffffffffffffffffffff16815250858281518110610f4f57610f4f6140cb565b602002602001018190525080610f6490614159565b9050610e66565b5050505092915050565b600080610f806124be565b6009548151919250610fa6916fffffffffffffffffffffffffffffffff90911690614129565b6fffffffffffffffffffffffffffffffff1691505090565b60045473ffffffffffffffffffffffffffffffffffffffff16331461100f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303611060576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b61110b336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b611141576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fc93cfdd5d8f442c448a02ed11ccff64355643272c9f2be94b723f2181af1a8969190a250565b6111d960405180606001604052806000815260200160008152602001600081525090565b60006112126111e66124be565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600a6020526040902060016123ae565b604080516060808201835283516fffffffffffffffffffffffffffffffff9081168352602080860151821690840152930151909216908201529392505050565b336000908152600b602052604090205460ff166112a2576040517fe5ef2bd00000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166112ef576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611329576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113336124be565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604081209192506113668383836124e8565b90506000611373856125fe565b9050600061138c8286600001518760400151600061264d565b600780547fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff166c010000000000000000000000004263ffffffff160217905585519091506113db908390614129565b600780546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055604085015161141e908290614129565b600880547001000000000000000000000000000000007fffffffffffffffffffffffffffffffff000000000000000000000000000000009091166fffffffffffffffffffffffffffffffff9384169081178290048416860190931602909117905560c083018051839190611493908390614129565b6fffffffffffffffffffffffffffffffff9081169091528451840181168086526040808701518501831670010000000000000000000000000000000002821788556020808801516060808a01518451958652918616928501929092529093169082015273ffffffffffffffffffffffffffffffffffffffff8a1692507f8cf9201b2cc3b3660a126e24012e6043c32d2a439d261cb9718f99aa610e070e910160405180910390a260405186815273ffffffffffffffffffffffffffffffffffffffff8816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050505050565b60006115ca61159e6124be565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020526040902060016123ae565b60c001516fffffffffffffffffffffffffffffffff1692915050565b336000908152600b602052604081205460ff16611631576040517fe5ef2bd0000000000000000000000000000000000000000000000000000000008152336004820152602401611299565b73ffffffffffffffffffffffffffffffffffffffff821661167e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116886124be565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604081209192506116bc838360016123ae565b60c08101516fffffffffffffffffffffffffffffffff1694509050831561173f5760405184815260009073ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361173f83838361173a886125fe565b6126c3565b8473ffffffffffffffffffffffffffffffffffffffff167f8cf9201b2cc3b3660a126e24012e6043c32d2a439d261cb9718f99aa610e070e8260000151836020015184606001516040516117bc939291906fffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b60405180910390a2505050919050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611822576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611873576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6000806119176124be565b905061192e8382600001518360400151600061264d565b9392505050565b600680546109089061407e565b60008061194d6124be565b905061192e83826000015183604001516000612aca565b611992336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b6119c8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f887003b0d91467e681b2ba1437748e2d1b6e9b0b1cb8be6541e6cdfc1b50eabc9190a250565b611a6360405180606001604052806000815260200160008152602001600081525090565b6000611a6d6124be565b60085460408051606081019091527001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff168082528251929350916020820190611aba9084612b30565b6fffffffffffffffffffffffffffffffff9081168252600954166020909101529392505050565b336000908152600b602052604081205460ff16611b2c576040517fe5ef2bd0000000000000000000000000000000000000000000000000000000008152336004820152602401611299565b73ffffffffffffffffffffffffffffffffffffffff8316611b79576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611bb3576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611bbd6124be565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600a60205260408120919250611bf1838360016123ae565b90508060c001516fffffffffffffffffffffffffffffffff16851115611c2b578060c001516fffffffffffffffffffffffffffffffff1694505b8415611c8e5760405185815260009073ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611c8e83838361173a896125fe565b8573ffffffffffffffffffffffffffffffffffffffff167f8cf9201b2cc3b3660a126e24012e6043c32d2a439d261cb9718f99aa610e070e826000015183602001518460600151604051611d0b939291906fffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b60405180910390a28493505050505b92915050565b611d4e336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b611d84576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611de391815260200190565b60405180910390a3611e0c73ffffffffffffffffffffffffffffffffffffffff84168383612b6a565b505050565b611e3f336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b611e75576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60205260409020611ead611ea5612302565b8260016124e8565b506001810180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff841690811790915560405190815273ffffffffffffffffffffffffffffffffffffffff8416907fcc685722da8686b48bf387357752b59f692a64df8d328f2b44bdf3a63cfc51ac9060200160405180910390a2505050565b600080611f46612302565b516fffffffffffffffffffffffffffffffff1692915050565b611f8d336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b611fc3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316612010576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b8281101561215e57848482818110612043576120436140cb565b90506040020180360381019061205991906141c0565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561215781614159565b9050612029565b505050505050565b612194336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b6121ca576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612217576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000806122e56122b9612302565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600a6020526040902060016124e8565b606001516fffffffffffffffffffffffffffffffff169392505050565b604080516060810182526000808252602082018190529181019190915261232881612bf7565b156123ab578051600780546bffffffffffffffffffffffff167001000000000000000000000000000000006fffffffffffffffffffffffffffffffff909316929092027fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff16919091176c010000000000000000000000004263ffffffff16021790555b90565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526123f384848385612cce565b509392505050565b60035460009060ff161561242d575060005473ffffffffffffffffffffffffffffffffffffffff838116911614611d1a565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806124a8575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156124b557506001611d1a565b50600092915050565b60408051606081018252600080825260208201819052918101919091526124e481612bf7565b5090565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261252d84848385612cce565b1561192e576080810151600980547fffffffffffffffffffffffffffffffff0000000000000000000000000000000081166fffffffffffffffffffffffffffffffff918216909301811692909217905560608201516001850180546bffffffffffffffffffffffff166c0100000000000000000000000092909316919091027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c01000000000000000000000000000000000000000000000000000000004263ffffffff16021790559392505050565b60006fffffffffffffffffffffffffffffffff8211156124e4576040517fe0fb6a7c00000000000000000000000000000000000000000000000000000000815260048101839052602401611299565b600080846fffffffffffffffffffffffffffffffff161161266e57846126b8565b6126b86126b3866fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff16876fffffffffffffffffffffffffffffffff1686612e86565b6125fe565b90505b949350505050565b60008085602001516bffffffffffffffffffffffff168460a001516bffffffffffffffffffffffff16111561277b57826fffffffffffffffffffffffffffffffff1684606001516fffffffffffffffffffffffffffffffff1610612727578261272d565b83606001515b91508183039250826fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610612769578261276f565b83602001515b90508083039250612800565b826fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff16106127b057826127b6565b83602001515b90508083039250826fffffffffffffffffffffffffffffffff1684606001516fffffffffffffffffffffffffffffffff16106127f257826127f8565b83606001515b915081830392505b855160408701518285019160009161281b918491600161264d565b600780547fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff166c010000000000000000000000004263ffffffff160217905588519091506128699083612b30565b600780546fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002921691909117905560408801516128ab9082612b30565b600880547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff928316179081905561290a917001000000000000000000000000000000009091041686612b30565b600880546fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002908316179055608087015160095461294f92160185612b30565b600980547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055855161299c9086612b30565b6fffffffffffffffffffffffffffffffff1680875287547fffffffffffffffffffffffffffffffff000000000000000000000000000000001617875560408601516129e79082612b30565b87546fffffffffffffffffffffffffffffffff9182167001000000000000000000000000000000000291161787556060860151612a249085612b30565b6fffffffffffffffffffffffffffffffff9081166060880181905260019890980180546bffffffffffffffffffffffff166c010000000000000000000000009099027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16989098177c01000000000000000000000000000000000000000000000000000000004263ffffffff16021790975550506020909301805193909303909316909152505050565b600080836fffffffffffffffffffffffffffffffff1611612aeb57846126b8565b6126b86126b3866fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1686612e86565b6000816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff1611612b6457600061192e565b50900390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611e0c908490612ec2565b6007546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811683526bffffffffffffffffffffffff8216602084015260085416604083015260009063ffffffff6c010000000000000000000000009091048116420390811615612cc8576020830151600192506bffffffffffffffffffffffff1615612cc85760208301518351612cb3916126b3916fffffffffffffffffffffffffffffffff169063ffffffff8086169190612fd116565b6fffffffffffffffffffffffffffffffff1683525b50919050565b82546fffffffffffffffffffffffffffffffff80821684527001000000000000000000000000000000009091048116604080850182905260018601546bffffffffffffffffffffffff811660a08701526c01000000000000000000000000810490931660608601528651908701516000937c0100000000000000000000000000000000000000000000000000000000900463ffffffff164203928492612d749287612aca565b9050612d84818660000151612b30565b6fffffffffffffffffffffffffffffffff16602086015263ffffffff821615612e535760a0850151600193506bffffffffffffffffffffffff1615612e5357600085606001516fffffffffffffffffffffffffffffffff1686600001516fffffffffffffffffffffffffffffffff16019050612e158363ffffffff168760a0015183612fd19092919063ffffffff16565b905060008660000151612e27836125fe565b6060890180516fffffffffffffffffffffffffffffffff93909203918203831660808b01529116905250505b6060850151612e629082614129565b6fffffffffffffffffffffffffffffffff1660c09095019490945250949350505050565b6000612e9385858561301c565b9050818015612eb2575060008380612ead57612ead614244565b858709115b156126bb576126b8600182614273565b6000612f24826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166131279092919063ffffffff16565b9050805160001480612f45575080806020019051810190612f459190614286565b611e0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611299565b6000806301e13380612ff16bffffffffffffffffffffffff8516866142a3565b612ffb91906142ba565b90506130136123ab61300c83613136565b879061319d565b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036130745783828161306a5761306a614244565b049250505061192e565b8381106130be576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401611299565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60606126bb84846000856131ac565b600081680736ea4425c11ac63081111561317f576040517f1af63aca00000000000000000000000000000000000000000000000000000000815260048101849052602401611299565b6714057b7ef767814f81026126bb670de0b6b3a764000082046132c5565b600061192e6123ab8484613334565b60608247101561323e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611299565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161326791906142f5565b60006040518083038185875af1925050503d80600081146132a4576040519150601f19603f3d011682016040523d82523d6000602084013e6132a9565b606091505b50915091506132ba8783838761343b565b979650505050505050565b600081680a688906bd8affffff81111561330e576040517fb3b6ba1f00000000000000000000000000000000000000000000000000000000815260048101849052602401611299565b6000613326670de0b6b3a7640000604084901b6142ba565b90506126bb6123ab826134db565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050806000036133865750670de0b6b3a764000090049050611d1a565b670de0b6b3a764000081106133d1576040517f5173648d0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401611299565b6000670de0b6b3a7640000858709620400008185030493109091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b606083156134d15782516000036134ca5773ffffffffffffffffffffffffffffffffffffffff85163b6134ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611299565b50816126bb565b6126bb8383613c4f565b7780000000000000000000000000000000000000000000000067ff000000000000008216156135fc576780000000000000008216156135235768016a09e667f3bcc9090260401c5b674000000000000000821615613542576801306fe0a31b7152df0260401c5b672000000000000000821615613561576801172b83c7d517adce0260401c5b6710000000000000008216156135805768010b5586cf9890f62a0260401c5b67080000000000000082161561359f576801059b0d31585743ae0260401c5b6704000000000000008216156135be57680102c9a3e778060ee70260401c5b6702000000000000008216156135dd5768010163da9fb33356d80260401c5b6701000000000000008216156135fc57680100b1afa5abcbed610260401c5b66ff0000000000008216156136fb5766800000000000008216156136295768010058c86da1c09ea20260401c5b6640000000000000821615613647576801002c605e2e8cec500260401c5b662000000000000082161561366557680100162f3904051fa10260401c5b6610000000000000821615613683576801000b175effdc76ba0260401c5b66080000000000008216156136a157680100058ba01fb9f96d0260401c5b66040000000000008216156136bf5768010002c5cc37da94920260401c5b66020000000000008216156136dd576801000162e525ee05470260401c5b66010000000000008216156136fb5768010000b17255775c040260401c5b65ff00000000008216156137f15765800000000000821615613726576801000058b91b5bc9ae0260401c5b6540000000000082161561374357680100002c5c89d5ec6d0260401c5b652000000000008216156137605768010000162e43f4f8310260401c5b6510000000000082161561377d57680100000b1721bcfc9a0260401c5b6508000000000082161561379a5768010000058b90cf1e6e0260401c5b650400000000008216156137b7576801000002c5c863b73f0260401c5b650200000000008216156137d457680100000162e430e5a20260401c5b650100000000008216156137f1576801000000b1721835510260401c5b64ff000000008216156138de5764800000000082161561381a57680100000058b90c0b490260401c5b6440000000008216156138365768010000002c5c8601cc0260401c5b642000000000821615613852576801000000162e42fff00260401c5b64100000000082161561386e5768010000000b17217fbb0260401c5b64080000000082161561388a576801000000058b90bfce0260401c5b6404000000008216156138a657680100000002c5c85fe30260401c5b6402000000008216156138c25768010000000162e42ff10260401c5b6401000000008216156138de57680100000000b17217f80260401c5b63ff0000008216156139c25763800000008216156139055768010000000058b90bfc0260401c5b6340000000821615613920576801000000002c5c85fe0260401c5b632000000082161561393b57680100000000162e42ff0260401c5b6310000000821615613956576801000000000b17217f0260401c5b630800000082161561397157680100000000058b90c00260401c5b630400000082161561398c5768010000000002c5c8600260401c5b63020000008216156139a7576801000000000162e4300260401c5b63010000008216156139c25768010000000000b172180260401c5b62ff0000821615613a9d57628000008216156139e7576801000000000058b90c0260401c5b62400000821615613a0157680100000000002c5c860260401c5b62200000821615613a1b5768010000000000162e430260401c5b62100000821615613a3557680100000000000b17210260401c5b62080000821615613a4f5768010000000000058b910260401c5b62040000821615613a69576801000000000002c5c80260401c5b62020000821615613a8357680100000000000162e40260401c5b62010000821615613a9d576801000000000000b1720260401c5b61ff00821615613b6f57618000821615613ac057680100000000000058b90260401c5b614000821615613ad95768010000000000002c5d0260401c5b612000821615613af2576801000000000000162e0260401c5b611000821615613b0b5768010000000000000b170260401c5b610800821615613b24576801000000000000058c0260401c5b610400821615613b3d57680100000000000002c60260401c5b610200821615613b5657680100000000000001630260401c5b610100821615613b6f57680100000000000000b10260401c5b60ff821615613c38576080821615613b9057680100000000000000590260401c5b6040821615613ba8576801000000000000002c0260401c5b6020821615613bc057680100000000000000160260401c5b6010821615613bd8576801000000000000000b0260401c5b6008821615613bf057680100000000000000060260401c5b6004821615613c0857680100000000000000030260401c5b6002821615613c2057680100000000000000010260401c5b6001821615613c3857680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b815115613c5f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112999190613ce5565b8015158114613ca157600080fd5b50565b600060208284031215613cb657600080fd5b813561192e81613c93565b60005b83811015613cdc578181015183820152602001613cc4565b50506000910152565b6020815260008251806020840152613d04816040850160208701613cc1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114613d5a57600080fd5b919050565b600060208284031215613d7157600080fd5b61192e82613d36565b60008060408385031215613d8d57600080fd5b613d9683613d36565b946020939093013593505050565b60008060208385031215613db757600080fd5b823567ffffffffffffffff80821115613dcf57600080fd5b818501915085601f830112613de357600080fd5b813581811115613df257600080fd5b8660208260051b8501011115613e0757600080fd5b60209290920196919550909350505050565b80356bffffffffffffffffffffffff81168114613d5a57600080fd5b600060208284031215613e4757600080fd5b61192e82613e19565b6020808252825182820181905260009190848201906040850190845b81811015613ea657613e938385518051825260208082015190830152604090810151910152565b9284019260609290920191600101613e6c565b50909695505050505050565b600080600060608486031215613ec757600080fd5b613ed084613d36565b9250613ede60208501613d36565b9150604084013590509250925092565b81518152602080830151908201526040808301519082015260608101611d1a565b600060208284031215613f2157600080fd5b81356fffffffffffffffffffffffffffffffff8116811461192e57600080fd5b60008060408385031215613f5457600080fd5b613f5d83613d36565b9150613f6b60208401613e19565b90509250929050565b600080600060408486031215613f8957600080fd5b613f9284613d36565b9250602084013567ffffffffffffffff80821115613faf57600080fd5b818601915086601f830112613fc357600080fd5b813581811115613fd257600080fd5b8760208260061b8501011115613fe757600080fd5b6020830194508093505050509250925092565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114613d5a57600080fd5b6000806040838503121561403d57600080fd5b61404683613d36565b9150613f6b60208401613ffa565b6000806040838503121561406757600080fd5b61407083613d36565b9150613f6b60208401613d36565b600181811c9082168061409257607f821691505b602082108103612cc8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6fffffffffffffffffffffffffffffffff818116838216019080821115614152576141526140fa565b5092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361418a5761418a6140fa565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000604082840312156141d257600080fd5b6040516040810181811067ffffffffffffffff8211171561421c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405261422883613ffa565b8152602083013561423881613c93565b60208201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b80820180821115611d1a57611d1a6140fa565b60006020828403121561429857600080fd5b815161192e81613c93565b8082028115828204841417611d1a57611d1a6140fa565b6000826142f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251614307818460208701613cc1565b919091019291505056fea26469706673582212203009ca0080e0ae1b72ed1841150fe57f54a82a4a1e4102239b210c9e1459ee3664736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102f45760003560e01c80637e9d2ac111610191578063a9059cbb116100e3578063c34c08e511610097578063dd62ed3e11610071578063dd62ed3e14610800578063e3141b8914610816578063f46eccc41461082957600080fd5b8063c34c08e51461079f578063d9a349c1146107bf578063daeccc79146107d257600080fd5b8063b11e5391116100c8578063b11e539114610771578063be4eba7814610784578063bfccf0ec1461078c57600080fd5b8063a9059cbb1461033f578063aa6be3031461067f57600080fd5b806395d89b41116101455780639a973fa21161011f5780639a973fa2146106515780639dc29fac14610659578063a7229fd91461066c57600080fd5b806395d89b4114610623578063983089e31461062b578063983b2d561461063e57600080fd5b806381a7627e1161017657806381a7627e146105d857806381ef27be146105eb5780638d61b7391461060757600080fd5b80637e9d2ac1146105bd5780638112c4af146105d057600080fd5b806323b872dd1161024a57806335172a89116101fe5780634b1533b2116101d85780634b1533b21461054157806354fd4d501461057157806370a08231146105aa57600080fd5b806335172a89146104b457806338a63183146104e957806340c10f191461052e57600080fd5b80633092afd51161022f5780633092afd514610467578063313ce5671461047a578063327efe611461049457600080fd5b806323b872dd146104085780632cf1873d1461041657600080fd5b80630c610cb8116102ac57806318160ddd1161028657806318160ddd146103b55780631f211405146103cb5780631f68f20a146103d357600080fd5b80630c610cb8146103755780630d2f6e2b146103885780631810fe7f146103a857600080fd5b806307f184f1116102dd57806307f184f11461032c578063095ea7b31461033f5780630bf000391461036257600080fd5b8063032ef901146102f957806306fdde031461030e575b600080fd5b61030c610307366004613ca4565b61084c565b005b6103166108fb565b6040516103239190613ce5565b60405180910390f35b61030c61033a366004613d5f565b610989565b61035261034d366004613d7a565b610ac1565b6040519015158152602001610323565b61030c610370366004613da4565b610af5565b61030c610383366004613e35565b610cce565b61039b610396366004613da4565b610dac565b6040516103239190613e50565b6003546103529060ff1681565b6103bd610f75565b604051908152602001610323565b61030c610fbe565b6007546103eb906bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff9091168152602001610323565b61035261034d366004613eb2565b6007546104469070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff9091168152602001610323565b61030c610475366004613d5f565b6110dd565b610482601281565b60405160ff9091168152602001610323565b6104a76104a2366004613d5f565b6111b5565b6040516103239190613eee565b6007546104d4906c01000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610323565b6000546105099073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610323565b61030c61053c366004613d7a565b611252565b6008546104469070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b60408051808201909152600581527f312e302e300000000000000000000000000000000000000000000000000000006020820152610316565b6103bd6105b8366004613d5f565b611591565b6103bd6105cb366004613d5f565b6115e6565b61030c6117cc565b6104466105e6366004613f0f565b61190c565b600854610446906fffffffffffffffffffffffffffffffff1681565b600954610446906fffffffffffffffffffffffffffffffff1681565b610316611935565b610446610639366004613f0f565b611942565b61030c61064c366004613d5f565b611964565b6104a7611a3f565b6103bd610667366004613d7a565b611ae1565b61030c61067a366004613eb2565b611d20565b61071a61068d366004613d5f565b600a60205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8083169270010000000000000000000000000000000090048116916bffffffffffffffffffffffff8116916c01000000000000000000000000820416907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1685565b604080516fffffffffffffffffffffffffffffffff968716815294861660208601526bffffffffffffffffffffffff9093169284019290925292909216606082015263ffffffff909116608082015260a001610323565b61030c61077f366004613f41565b611e11565b6103bd611f3b565b61030c61079a366004613f74565b611f5f565b6001546105099073ffffffffffffffffffffffffffffffffffffffff1681565b61030c6107cd366004613d5f565b612166565b6103526107e036600461402a565b600260209081526000928352604080842090915290825290205460ff1681565b6103bd61080e366004614054565b600092915050565b6103bd610824366004613d5f565b6122ab565b610352610837366004613d5f565b600b6020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461089d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600580546109089061407e565b80601f01602080910402602001604051908101604052809291908181526020018280546109349061407e565b80156109815780601f1061095657610100808354040283529160200191610981565b820191906000526020600020905b81548152906001019060200180831161096457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109da576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a27576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60006040517fbf9e1a7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610aff612302565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290529192508084815b81811015610c6757600a6000898984818110610b5c57610b5c6140cb565b9050602002016020810190610b719190613d5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350610bb9868560016123ae565b9450846080015183610bcb9190614129565b60608601516001860180546bffffffffffffffffffffffff166c010000000000000000000000006fffffffffffffffffffffffffffffffff909316929092027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c01000000000000000000000000000000000000000000000000000000004263ffffffff16021790559250610c6081614159565b9050610b3e565b5060098054839190600090610c8f9084906fffffffffffffffffffffffffffffffff16614129565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050505050565b610cfc336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b610d32576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d3a612302565b50600780547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff83169081179091556040519081527f487325d985e5a56d2f4c59496d1f6bdf37b074c0f2c22e3eba20233e060684da9060200160405180910390a150565b60606000610db86124be565b9050828067ffffffffffffffff811115610dd457610dd4614191565b604051908082528060200260200182016040528015610e2957816020015b610e1660405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610df25790505b506040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290529194505b82811015610f6b57610ede84600a60008a8a86818110610e8857610e886140cb565b9050602002016020810190610e9d9190613d5f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016123ae565b9150604051806060016040528083600001516fffffffffffffffffffffffffffffffff16815260200183602001516fffffffffffffffffffffffffffffffff16815260200183606001516fffffffffffffffffffffffffffffffff16815250858281518110610f4f57610f4f6140cb565b602002602001018190525080610f6490614159565b9050610e66565b5050505092915050565b600080610f806124be565b6009548151919250610fa6916fffffffffffffffffffffffffffffffff90911690614129565b6fffffffffffffffffffffffffffffffff1691505090565b60045473ffffffffffffffffffffffffffffffffffffffff16331461100f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303611060576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b61110b336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b611141576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fc93cfdd5d8f442c448a02ed11ccff64355643272c9f2be94b723f2181af1a8969190a250565b6111d960405180606001604052806000815260200160008152602001600081525090565b60006112126111e66124be565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600a6020526040902060016123ae565b604080516060808201835283516fffffffffffffffffffffffffffffffff9081168352602080860151821690840152930151909216908201529392505050565b336000908152600b602052604090205460ff166112a2576040517fe5ef2bd00000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166112ef576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611329576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113336124be565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604081209192506113668383836124e8565b90506000611373856125fe565b9050600061138c8286600001518760400151600061264d565b600780547fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff166c010000000000000000000000004263ffffffff160217905585519091506113db908390614129565b600780546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055604085015161141e908290614129565b600880547001000000000000000000000000000000007fffffffffffffffffffffffffffffffff000000000000000000000000000000009091166fffffffffffffffffffffffffffffffff9384169081178290048416860190931602909117905560c083018051839190611493908390614129565b6fffffffffffffffffffffffffffffffff9081169091528451840181168086526040808701518501831670010000000000000000000000000000000002821788556020808801516060808a01518451958652918616928501929092529093169082015273ffffffffffffffffffffffffffffffffffffffff8a1692507f8cf9201b2cc3b3660a126e24012e6043c32d2a439d261cb9718f99aa610e070e910160405180910390a260405186815273ffffffffffffffffffffffffffffffffffffffff8816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050505050565b60006115ca61159e6124be565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020526040902060016123ae565b60c001516fffffffffffffffffffffffffffffffff1692915050565b336000908152600b602052604081205460ff16611631576040517fe5ef2bd0000000000000000000000000000000000000000000000000000000008152336004820152602401611299565b73ffffffffffffffffffffffffffffffffffffffff821661167e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116886124be565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604081209192506116bc838360016123ae565b60c08101516fffffffffffffffffffffffffffffffff1694509050831561173f5760405184815260009073ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361173f83838361173a886125fe565b6126c3565b8473ffffffffffffffffffffffffffffffffffffffff167f8cf9201b2cc3b3660a126e24012e6043c32d2a439d261cb9718f99aa610e070e8260000151836020015184606001516040516117bc939291906fffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b60405180910390a2505050919050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611822576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611873576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6000806119176124be565b905061192e8382600001518360400151600061264d565b9392505050565b600680546109089061407e565b60008061194d6124be565b905061192e83826000015183604001516000612aca565b611992336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b6119c8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f887003b0d91467e681b2ba1437748e2d1b6e9b0b1cb8be6541e6cdfc1b50eabc9190a250565b611a6360405180606001604052806000815260200160008152602001600081525090565b6000611a6d6124be565b60085460408051606081019091527001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff168082528251929350916020820190611aba9084612b30565b6fffffffffffffffffffffffffffffffff9081168252600954166020909101529392505050565b336000908152600b602052604081205460ff16611b2c576040517fe5ef2bd0000000000000000000000000000000000000000000000000000000008152336004820152602401611299565b73ffffffffffffffffffffffffffffffffffffffff8316611b79576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611bb3576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611bbd6124be565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600a60205260408120919250611bf1838360016123ae565b90508060c001516fffffffffffffffffffffffffffffffff16851115611c2b578060c001516fffffffffffffffffffffffffffffffff1694505b8415611c8e5760405185815260009073ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611c8e83838361173a896125fe565b8573ffffffffffffffffffffffffffffffffffffffff167f8cf9201b2cc3b3660a126e24012e6043c32d2a439d261cb9718f99aa610e070e826000015183602001518460600151604051611d0b939291906fffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b60405180910390a28493505050505b92915050565b611d4e336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b611d84576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611de391815260200190565b60405180910390a3611e0c73ffffffffffffffffffffffffffffffffffffffff84168383612b6a565b505050565b611e3f336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b611e75576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60205260409020611ead611ea5612302565b8260016124e8565b506001810180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff841690811790915560405190815273ffffffffffffffffffffffffffffffffffffffff8416907fcc685722da8686b48bf387357752b59f692a64df8d328f2b44bdf3a63cfc51ac9060200160405180910390a2505050565b600080611f46612302565b516fffffffffffffffffffffffffffffffff1692915050565b611f8d336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b611fc3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316612010576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b8281101561215e57848482818110612043576120436140cb565b90506040020180360381019061205991906141c0565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561215781614159565b9050612029565b505050505050565b612194336000357fffffffff00000000000000000000000000000000000000000000000000000000166123fb565b6121ca576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612217576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000806122e56122b9612302565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600a6020526040902060016124e8565b606001516fffffffffffffffffffffffffffffffff169392505050565b604080516060810182526000808252602082018190529181019190915261232881612bf7565b156123ab578051600780546bffffffffffffffffffffffff167001000000000000000000000000000000006fffffffffffffffffffffffffffffffff909316929092027fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff16919091176c010000000000000000000000004263ffffffff16021790555b90565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526123f384848385612cce565b509392505050565b60035460009060ff161561242d575060005473ffffffffffffffffffffffffffffffffffffffff838116911614611d1a565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806124a8575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156124b557506001611d1a565b50600092915050565b60408051606081018252600080825260208201819052918101919091526124e481612bf7565b5090565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261252d84848385612cce565b1561192e576080810151600980547fffffffffffffffffffffffffffffffff0000000000000000000000000000000081166fffffffffffffffffffffffffffffffff918216909301811692909217905560608201516001850180546bffffffffffffffffffffffff166c0100000000000000000000000092909316919091027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c01000000000000000000000000000000000000000000000000000000004263ffffffff16021790559392505050565b60006fffffffffffffffffffffffffffffffff8211156124e4576040517fe0fb6a7c00000000000000000000000000000000000000000000000000000000815260048101839052602401611299565b600080846fffffffffffffffffffffffffffffffff161161266e57846126b8565b6126b86126b3866fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff16876fffffffffffffffffffffffffffffffff1686612e86565b6125fe565b90505b949350505050565b60008085602001516bffffffffffffffffffffffff168460a001516bffffffffffffffffffffffff16111561277b57826fffffffffffffffffffffffffffffffff1684606001516fffffffffffffffffffffffffffffffff1610612727578261272d565b83606001515b91508183039250826fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610612769578261276f565b83602001515b90508083039250612800565b826fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff16106127b057826127b6565b83602001515b90508083039250826fffffffffffffffffffffffffffffffff1684606001516fffffffffffffffffffffffffffffffff16106127f257826127f8565b83606001515b915081830392505b855160408701518285019160009161281b918491600161264d565b600780547fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff166c010000000000000000000000004263ffffffff160217905588519091506128699083612b30565b600780546fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002921691909117905560408801516128ab9082612b30565b600880547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff928316179081905561290a917001000000000000000000000000000000009091041686612b30565b600880546fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002908316179055608087015160095461294f92160185612b30565b600980547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055855161299c9086612b30565b6fffffffffffffffffffffffffffffffff1680875287547fffffffffffffffffffffffffffffffff000000000000000000000000000000001617875560408601516129e79082612b30565b87546fffffffffffffffffffffffffffffffff9182167001000000000000000000000000000000000291161787556060860151612a249085612b30565b6fffffffffffffffffffffffffffffffff9081166060880181905260019890980180546bffffffffffffffffffffffff166c010000000000000000000000009099027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16989098177c01000000000000000000000000000000000000000000000000000000004263ffffffff16021790975550506020909301805193909303909316909152505050565b600080836fffffffffffffffffffffffffffffffff1611612aeb57846126b8565b6126b86126b3866fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1686612e86565b6000816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff1611612b6457600061192e565b50900390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611e0c908490612ec2565b6007546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811683526bffffffffffffffffffffffff8216602084015260085416604083015260009063ffffffff6c010000000000000000000000009091048116420390811615612cc8576020830151600192506bffffffffffffffffffffffff1615612cc85760208301518351612cb3916126b3916fffffffffffffffffffffffffffffffff169063ffffffff8086169190612fd116565b6fffffffffffffffffffffffffffffffff1683525b50919050565b82546fffffffffffffffffffffffffffffffff80821684527001000000000000000000000000000000009091048116604080850182905260018601546bffffffffffffffffffffffff811660a08701526c01000000000000000000000000810490931660608601528651908701516000937c0100000000000000000000000000000000000000000000000000000000900463ffffffff164203928492612d749287612aca565b9050612d84818660000151612b30565b6fffffffffffffffffffffffffffffffff16602086015263ffffffff821615612e535760a0850151600193506bffffffffffffffffffffffff1615612e5357600085606001516fffffffffffffffffffffffffffffffff1686600001516fffffffffffffffffffffffffffffffff16019050612e158363ffffffff168760a0015183612fd19092919063ffffffff16565b905060008660000151612e27836125fe565b6060890180516fffffffffffffffffffffffffffffffff93909203918203831660808b01529116905250505b6060850151612e629082614129565b6fffffffffffffffffffffffffffffffff1660c09095019490945250949350505050565b6000612e9385858561301c565b9050818015612eb2575060008380612ead57612ead614244565b858709115b156126bb576126b8600182614273565b6000612f24826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166131279092919063ffffffff16565b9050805160001480612f45575080806020019051810190612f459190614286565b611e0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611299565b6000806301e13380612ff16bffffffffffffffffffffffff8516866142a3565b612ffb91906142ba565b90506130136123ab61300c83613136565b879061319d565b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036130745783828161306a5761306a614244565b049250505061192e565b8381106130be576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401611299565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60606126bb84846000856131ac565b600081680736ea4425c11ac63081111561317f576040517f1af63aca00000000000000000000000000000000000000000000000000000000815260048101849052602401611299565b6714057b7ef767814f81026126bb670de0b6b3a764000082046132c5565b600061192e6123ab8484613334565b60608247101561323e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611299565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161326791906142f5565b60006040518083038185875af1925050503d80600081146132a4576040519150601f19603f3d011682016040523d82523d6000602084013e6132a9565b606091505b50915091506132ba8783838761343b565b979650505050505050565b600081680a688906bd8affffff81111561330e576040517fb3b6ba1f00000000000000000000000000000000000000000000000000000000815260048101849052602401611299565b6000613326670de0b6b3a7640000604084901b6142ba565b90506126bb6123ab826134db565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050806000036133865750670de0b6b3a764000090049050611d1a565b670de0b6b3a764000081106133d1576040517f5173648d0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401611299565b6000670de0b6b3a7640000858709620400008185030493109091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b606083156134d15782516000036134ca5773ffffffffffffffffffffffffffffffffffffffff85163b6134ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611299565b50816126bb565b6126bb8383613c4f565b7780000000000000000000000000000000000000000000000067ff000000000000008216156135fc576780000000000000008216156135235768016a09e667f3bcc9090260401c5b674000000000000000821615613542576801306fe0a31b7152df0260401c5b672000000000000000821615613561576801172b83c7d517adce0260401c5b6710000000000000008216156135805768010b5586cf9890f62a0260401c5b67080000000000000082161561359f576801059b0d31585743ae0260401c5b6704000000000000008216156135be57680102c9a3e778060ee70260401c5b6702000000000000008216156135dd5768010163da9fb33356d80260401c5b6701000000000000008216156135fc57680100b1afa5abcbed610260401c5b66ff0000000000008216156136fb5766800000000000008216156136295768010058c86da1c09ea20260401c5b6640000000000000821615613647576801002c605e2e8cec500260401c5b662000000000000082161561366557680100162f3904051fa10260401c5b6610000000000000821615613683576801000b175effdc76ba0260401c5b66080000000000008216156136a157680100058ba01fb9f96d0260401c5b66040000000000008216156136bf5768010002c5cc37da94920260401c5b66020000000000008216156136dd576801000162e525ee05470260401c5b66010000000000008216156136fb5768010000b17255775c040260401c5b65ff00000000008216156137f15765800000000000821615613726576801000058b91b5bc9ae0260401c5b6540000000000082161561374357680100002c5c89d5ec6d0260401c5b652000000000008216156137605768010000162e43f4f8310260401c5b6510000000000082161561377d57680100000b1721bcfc9a0260401c5b6508000000000082161561379a5768010000058b90cf1e6e0260401c5b650400000000008216156137b7576801000002c5c863b73f0260401c5b650200000000008216156137d457680100000162e430e5a20260401c5b650100000000008216156137f1576801000000b1721835510260401c5b64ff000000008216156138de5764800000000082161561381a57680100000058b90c0b490260401c5b6440000000008216156138365768010000002c5c8601cc0260401c5b642000000000821615613852576801000000162e42fff00260401c5b64100000000082161561386e5768010000000b17217fbb0260401c5b64080000000082161561388a576801000000058b90bfce0260401c5b6404000000008216156138a657680100000002c5c85fe30260401c5b6402000000008216156138c25768010000000162e42ff10260401c5b6401000000008216156138de57680100000000b17217f80260401c5b63ff0000008216156139c25763800000008216156139055768010000000058b90bfc0260401c5b6340000000821615613920576801000000002c5c85fe0260401c5b632000000082161561393b57680100000000162e42ff0260401c5b6310000000821615613956576801000000000b17217f0260401c5b630800000082161561397157680100000000058b90c00260401c5b630400000082161561398c5768010000000002c5c8600260401c5b63020000008216156139a7576801000000000162e4300260401c5b63010000008216156139c25768010000000000b172180260401c5b62ff0000821615613a9d57628000008216156139e7576801000000000058b90c0260401c5b62400000821615613a0157680100000000002c5c860260401c5b62200000821615613a1b5768010000000000162e430260401c5b62100000821615613a3557680100000000000b17210260401c5b62080000821615613a4f5768010000000000058b910260401c5b62040000821615613a69576801000000000002c5c80260401c5b62020000821615613a8357680100000000000162e40260401c5b62010000821615613a9d576801000000000000b1720260401c5b61ff00821615613b6f57618000821615613ac057680100000000000058b90260401c5b614000821615613ad95768010000000000002c5d0260401c5b612000821615613af2576801000000000000162e0260401c5b611000821615613b0b5768010000000000000b170260401c5b610800821615613b24576801000000000000058c0260401c5b610400821615613b3d57680100000000000002c60260401c5b610200821615613b5657680100000000000001630260401c5b610100821615613b6f57680100000000000000b10260401c5b60ff821615613c38576080821615613b9057680100000000000000590260401c5b6040821615613ba8576801000000000000002c0260401c5b6020821615613bc057680100000000000000160260401c5b6010821615613bd8576801000000000000000b0260401c5b6008821615613bf057680100000000000000060260401c5b6004821615613c0857680100000000000000030260401c5b6002821615613c2057680100000000000000010260401c5b6001821615613c3857680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b815115613c5f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112999190613ce5565b8015158114613ca157600080fd5b50565b600060208284031215613cb657600080fd5b813561192e81613c93565b60005b83811015613cdc578181015183820152602001613cc4565b50506000910152565b6020815260008251806020840152613d04816040850160208701613cc1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114613d5a57600080fd5b919050565b600060208284031215613d7157600080fd5b61192e82613d36565b60008060408385031215613d8d57600080fd5b613d9683613d36565b946020939093013593505050565b60008060208385031215613db757600080fd5b823567ffffffffffffffff80821115613dcf57600080fd5b818501915085601f830112613de357600080fd5b813581811115613df257600080fd5b8660208260051b8501011115613e0757600080fd5b60209290920196919550909350505050565b80356bffffffffffffffffffffffff81168114613d5a57600080fd5b600060208284031215613e4757600080fd5b61192e82613e19565b6020808252825182820181905260009190848201906040850190845b81811015613ea657613e938385518051825260208082015190830152604090810151910152565b9284019260609290920191600101613e6c565b50909695505050505050565b600080600060608486031215613ec757600080fd5b613ed084613d36565b9250613ede60208501613d36565b9150604084013590509250925092565b81518152602080830151908201526040808301519082015260608101611d1a565b600060208284031215613f2157600080fd5b81356fffffffffffffffffffffffffffffffff8116811461192e57600080fd5b60008060408385031215613f5457600080fd5b613f5d83613d36565b9150613f6b60208401613e19565b90509250929050565b600080600060408486031215613f8957600080fd5b613f9284613d36565b9250602084013567ffffffffffffffff80821115613faf57600080fd5b818601915086601f830112613fc357600080fd5b813581811115613fd257600080fd5b8760208260061b8501011115613fe757600080fd5b6020830194508093505050509250925092565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114613d5a57600080fd5b6000806040838503121561403d57600080fd5b61404683613d36565b9150613f6b60208401613ffa565b6000806040838503121561406757600080fd5b61407083613d36565b9150613f6b60208401613d36565b600181811c9082168061409257607f821691505b602082108103612cc8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6fffffffffffffffffffffffffffffffff818116838216019080821115614152576141526140fa565b5092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361418a5761418a6140fa565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000604082840312156141d257600080fd5b6040516040810181811067ffffffffffffffff8211171561421c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405261422883613ffa565b8152602083013561423881613c93565b60208201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b80820180821115611d1a57611d1a6140fa565b60006020828403121561429857600080fd5b815161192e81613c93565b8082028115828204841417611d1a57611d1a6140fa565b6000826142f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251614307818460208701613cc1565b919091019291505056fea26469706673582212203009ca0080e0ae1b72ed1841150fe57f54a82a4a1e4102239b210c9e1459ee3664736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/TreasuryPriceIndexOracle.sol/TreasuryPriceIndexOracle.json b/apps/dapp/abi/contracts/v2/TreasuryPriceIndexOracle.sol/TreasuryPriceIndexOracle.json new file mode 100644 index 000000000..0a83867dd --- /dev/null +++ b/apps/dapp/abi/contracts/v2/TreasuryPriceIndexOracle.sol/TreasuryPriceIndexOracle.json @@ -0,0 +1,496 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TreasuryPriceIndexOracle", + "sourceName": "contracts/v2/TreasuryPriceIndexOracle.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_initialTreasuryPriceIndex", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "_maxTreasuryPriceIndexDelta", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "_cooldownSecs", + "type": "uint32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint96", + "name": "oldTpi", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "newTpi", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "maxDelta", + "type": "uint256" + } + ], + "name": "BreachedMaxTpiDelta", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "maxDelta", + "type": "uint256" + } + ], + "name": "MaxTreasuryPriceIndexDeltaSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "cooldownSecs", + "type": "uint32" + } + ], + "name": "TpiCooldownSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint96", + "name": "oldTpi", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "newTpi", + "type": "uint96" + } + ], + "name": "TreasuryPriceIndexSet", + "type": "event" + }, + { + "inputs": [], + "name": "TPI_DECIMALS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxTreasuryPriceIndexDelta", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "maxDelta", + "type": "uint256" + } + ], + "name": "setMaxTreasuryPriceIndexDelta", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "cooldownSecs", + "type": "uint32" + } + ], + "name": "setTpiCooldown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint96", + "name": "value", + "type": "uint96" + } + ], + "name": "setTreasuryPriceIndex", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "tpiData", + "outputs": [ + { + "internalType": "uint96", + "name": "currentTpi", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "previousTpi", + "type": "uint96" + }, + { + "internalType": "uint32", + "name": "lastUpdatedAt", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "cooldownSecs", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryPriceIndex", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200159a3803806200159a833981016040819052620000349162000199565b84846001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b03199081166001600160a01b03948516179091556001805490911691909216179055604080516080810182526001600160601b0394909416808552602085018190524263ffffffff908116928601839052929092166060909401849052600580546001600160c01b03191683176c01000000000000000000000000909302929092176001600160c01b0316600160c01b9091026001600160e01b031617600160e01b90930292909217909155600655506200021b9050565b80516001600160a01b03811681146200019457600080fd5b919050565b600080600080600060a08688031215620001b257600080fd5b620001bd866200017c565b9450620001cd602087016200017c565b60408701519094506001600160601b0381168114620001eb57600080fd5b60608701516080880151919450925063ffffffff811681146200020d57600080fd5b809150509295509295909350565b61136f806200022b6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638f320cef116100b2578063c34c08e511610081578063d9a349c111610066578063d9a349c11461030c578063daeccc791461031f578063df2e55961461034d57600080fd5b8063c34c08e51461023c578063d4353b7d1461025c57600080fd5b80638f320cef146101e85780639ed384f1146101fb578063a47a448414610220578063bfccf0ec1461022957600080fd5b806338a63183116100ee57806338a631831461017257806341400be1146101b75780635e468f40146101cd5780638112c4af146101e057600080fd5b8063032ef9011461012057806307f184f1146101355780631810fe7f146101485780631f2114051461016a575b600080fd5b61013361012e366004611046565b610360565b005b61013361014336600461108c565b61040f565b6003546101559060ff1681565b60405190151581526020015b60405180910390f35b610133610547565b6000546101929073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610161565b6101bf601281565b604051908152602001610161565b6101336101db3660046110a7565b610666565b6101336108bb565b6101336101f63660046110d5565b6109fb565b610203610aeb565b6040516bffffffffffffffffffffffff9091168152602001610161565b6101bf60065481565b6101336102373660046110fb565b610b85565b6001546101929073ffffffffffffffffffffffffffffffffffffffff1681565b6005546102d0906bffffffffffffffffffffffff808216916c0100000000000000000000000081049091169063ffffffff780100000000000000000000000000000000000000000000000082048116917c010000000000000000000000000000000000000000000000000000000090041684565b604080516bffffffffffffffffffffffff958616815294909316602085015263ffffffff91821692840192909252166060820152608001610161565b61013361031a36600461108c565b610d8c565b61015561032d3660046111b1565b600260209081526000928352604080842090915290825290205460ff1681565b61013361035b3660046111e4565b610ed1565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103b1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610460576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166104ad576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff163314610598576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036105e9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610694336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b6106ca576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106d4610aeb565b90508160006bffffffffffffffffffffffff808416908316116106f9578183036106fd565b8282035b6bffffffffffffffffffffffff169050600654811115610770576006546040517f19c8e1630000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff808616600483015284166024820152604481019190915260640160405180910390fd5b50604080516bffffffffffffffffffffffff8085168252831660208201527feae3d871f50c7f047f66aa3f130df7207a4765b71fad6a5ce3b133ccaaf51a41910160405180910390a1604080516080810182526bffffffffffffffffffffffff92831680825293909216602083018190524263ffffffff908116928401839052600580547c010000000000000000000000000000000000000000000000000000000080820490931660609096018690527fffffffffffffffff000000000000000000000000000000000000000000000000169095176c010000000000000000000000009092029190911777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009092027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691909117910217905550565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610911576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610962576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b610a29336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b610a5f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405163ffffffff821681527f140cd3b3be0b8001c79be56b82e3db11347fadfa65b70f340f8cd41827764ff89060200160405180910390a16005805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600554600090610b3f9063ffffffff7c01000000000000000000000000000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041661122c565b63ffffffff164210610b6057506005546bffffffffffffffffffffffff1690565b506005546c0100000000000000000000000090046bffffffffffffffffffffffff1690565b610bb3336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b610be9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610c36576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610d8457848482818110610c6957610c69611250565b905060400201803603810190610c7f919061127f565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055610d7d81611301565b9050610c4f565b505050505050565b610dba336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b610df0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e3d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610eff336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b610f35576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fd888630b64a96cdd97f6fe3cf4f36a554f728804c3fb7e96b9b62a10b811ed0b9060200160405180910390a1600655565b60035460009060ff1615610f9f575060005473ffffffffffffffffffffffffffffffffffffffff83811691161461102b565b60015473ffffffffffffffffffffffffffffffffffffffff8481169116148061101a575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156110275750600161102b565b5060005b92915050565b8035801515811461104157600080fd5b919050565b60006020828403121561105857600080fd5b61106182611031565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461104157600080fd5b60006020828403121561109e57600080fd5b61106182611068565b6000602082840312156110b957600080fd5b81356bffffffffffffffffffffffff8116811461106157600080fd5b6000602082840312156110e757600080fd5b813563ffffffff8116811461106157600080fd5b60008060006040848603121561111057600080fd5b61111984611068565b9250602084013567ffffffffffffffff8082111561113657600080fd5b818601915086601f83011261114a57600080fd5b81358181111561115957600080fd5b8760208260061b850101111561116e57600080fd5b6020830194508093505050509250925092565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461104157600080fd5b600080604083850312156111c457600080fd5b6111cd83611068565b91506111db60208401611181565b90509250929050565b6000602082840312156111f657600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff818116838216019080821115611249576112496111fd565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561129157600080fd5b6040516040810181811067ffffffffffffffff821117156112db577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526112e783611181565b81526112f560208401611031565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611332576113326111fd565b506001019056fea2646970667358221220fe501ffc794c55bcb1757dd08b31c52660d78c85393690d30c755b0ddd10f26764736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c80638f320cef116100b2578063c34c08e511610081578063d9a349c111610066578063d9a349c11461030c578063daeccc791461031f578063df2e55961461034d57600080fd5b8063c34c08e51461023c578063d4353b7d1461025c57600080fd5b80638f320cef146101e85780639ed384f1146101fb578063a47a448414610220578063bfccf0ec1461022957600080fd5b806338a63183116100ee57806338a631831461017257806341400be1146101b75780635e468f40146101cd5780638112c4af146101e057600080fd5b8063032ef9011461012057806307f184f1146101355780631810fe7f146101485780631f2114051461016a575b600080fd5b61013361012e366004611046565b610360565b005b61013361014336600461108c565b61040f565b6003546101559060ff1681565b60405190151581526020015b60405180910390f35b610133610547565b6000546101929073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610161565b6101bf601281565b604051908152602001610161565b6101336101db3660046110a7565b610666565b6101336108bb565b6101336101f63660046110d5565b6109fb565b610203610aeb565b6040516bffffffffffffffffffffffff9091168152602001610161565b6101bf60065481565b6101336102373660046110fb565b610b85565b6001546101929073ffffffffffffffffffffffffffffffffffffffff1681565b6005546102d0906bffffffffffffffffffffffff808216916c0100000000000000000000000081049091169063ffffffff780100000000000000000000000000000000000000000000000082048116917c010000000000000000000000000000000000000000000000000000000090041684565b604080516bffffffffffffffffffffffff958616815294909316602085015263ffffffff91821692840192909252166060820152608001610161565b61013361031a36600461108c565b610d8c565b61015561032d3660046111b1565b600260209081526000928352604080842090915290825290205460ff1681565b61013361035b3660046111e4565b610ed1565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103b1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610460576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166104ad576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff163314610598576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036105e9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610694336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b6106ca576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106d4610aeb565b90508160006bffffffffffffffffffffffff808416908316116106f9578183036106fd565b8282035b6bffffffffffffffffffffffff169050600654811115610770576006546040517f19c8e1630000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff808616600483015284166024820152604481019190915260640160405180910390fd5b50604080516bffffffffffffffffffffffff8085168252831660208201527feae3d871f50c7f047f66aa3f130df7207a4765b71fad6a5ce3b133ccaaf51a41910160405180910390a1604080516080810182526bffffffffffffffffffffffff92831680825293909216602083018190524263ffffffff908116928401839052600580547c010000000000000000000000000000000000000000000000000000000080820490931660609096018690527fffffffffffffffff000000000000000000000000000000000000000000000000169095176c010000000000000000000000009092029190911777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009092027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691909117910217905550565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610911576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610962576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b610a29336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b610a5f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405163ffffffff821681527f140cd3b3be0b8001c79be56b82e3db11347fadfa65b70f340f8cd41827764ff89060200160405180910390a16005805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600554600090610b3f9063ffffffff7c01000000000000000000000000000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041661122c565b63ffffffff164210610b6057506005546bffffffffffffffffffffffff1690565b506005546c0100000000000000000000000090046bffffffffffffffffffffffff1690565b610bb3336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b610be9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610c36576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610d8457848482818110610c6957610c69611250565b905060400201803603810190610c7f919061127f565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055610d7d81611301565b9050610c4f565b505050505050565b610dba336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b610df0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e3d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610eff336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f6d565b610f35576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fd888630b64a96cdd97f6fe3cf4f36a554f728804c3fb7e96b9b62a10b811ed0b9060200160405180910390a1600655565b60035460009060ff1615610f9f575060005473ffffffffffffffffffffffffffffffffffffffff83811691161461102b565b60015473ffffffffffffffffffffffffffffffffffffffff8481169116148061101a575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156110275750600161102b565b5060005b92915050565b8035801515811461104157600080fd5b919050565b60006020828403121561105857600080fd5b61106182611031565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461104157600080fd5b60006020828403121561109e57600080fd5b61106182611068565b6000602082840312156110b957600080fd5b81356bffffffffffffffffffffffff8116811461106157600080fd5b6000602082840312156110e757600080fd5b813563ffffffff8116811461106157600080fd5b60008060006040848603121561111057600080fd5b61111984611068565b9250602084013567ffffffffffffffff8082111561113657600080fd5b818601915086601f83011261114a57600080fd5b81358181111561115957600080fd5b8760208260061b850101111561116e57600080fd5b6020830194508093505050509250925092565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461104157600080fd5b600080604083850312156111c457600080fd5b6111cd83611068565b91506111db60208401611181565b90509250929050565b6000602082840312156111f657600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff818116838216019080821115611249576112496111fd565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561129157600080fd5b6040516040810181811067ffffffffffffffff821117156112db577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526112e783611181565b81526112f560208401611031565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611332576113326111fd565b506001019056fea2646970667358221220fe501ffc794c55bcb1757dd08b31c52660d78c85393690d30c755b0ddd10f26764736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/TreasuryReservesVault.sol/TreasuryReservesVault.json b/apps/dapp/abi/contracts/v2/TreasuryReservesVault.sol/TreasuryReservesVault.json new file mode 100644 index 000000000..39416522b --- /dev/null +++ b/apps/dapp/abi/contracts/v2/TreasuryReservesVault.sol/TreasuryReservesVault.json @@ -0,0 +1,1498 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TreasuryReservesVault", + "sourceName": "contracts/v2/TreasuryReservesVault.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "address", + "name": "_tpiOracle", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyEnabled", + "type": "error" + }, + { + "inputs": [], + "name": "BorrowPaused", + "type": "error" + }, + { + "inputs": [], + "name": "BorrowTokenNotEnabled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "available", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "DebtCeilingBreached", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "inputs": [], + "name": "NotShuttingDown", + "type": "error" + }, + { + "inputs": [], + "name": "RepaysPaused", + "type": "error" + }, + { + "inputs": [], + "name": "StrategyIsShutdown", + "type": "error" + }, + { + "inputs": [], + "name": "StrategyNotEnabled", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "BorrowTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "baseStrategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseStrategyWithdrawalBuffer", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseStrategyDepositThreshold", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "dToken", + "type": "address" + } + ], + "name": "BorrowTokenSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oldDebtCeiling", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "DebtCeilingUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "borrow", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "repay", + "type": "bool" + } + ], + "name": "GlobalPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Repay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + } + ], + "name": "StrategyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "credit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "debt", + "type": "uint256" + } + ], + "name": "StrategyCreditAndDebtBalance", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isShuttingDown", + "type": "bool" + } + ], + "name": "StrategyIsShuttingDownSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "borrow", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "repay", + "type": "bool" + } + ], + "name": "StrategyPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "StrategyRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "outstandingCredit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "outstandingDebt", + "type": "uint256" + } + ], + "name": "StrategyShutdownCreditAndDebt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "tpiOracle", + "type": "address" + } + ], + "name": "TpiOracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "oldThreshold", + "type": "int256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "newThreshold", + "type": "int256" + } + ], + "name": "UnderperformingEquityThresholdUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "debtCeiling", + "type": "tuple[]" + } + ], + "name": "addStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "availableForStrategyToBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrowMax", + "outputs": [ + { + "internalType": "uint256", + "name": "borrowedAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "name": "borrowTokens", + "outputs": [ + { + "internalType": "contract ITempleBaseStrategy", + "name": "baseStrategy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "baseStrategyWithdrawalBuffer", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseStrategyDepositThreshold", + "type": "uint256" + }, + { + "internalType": "contract ITempleDebtToken", + "name": "dToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "borrowTokensList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "globalBorrowPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "globalRepaysPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "removeBorrowToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "repay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "repayAll", + "outputs": [ + { + "internalType": "uint256", + "name": "amountRepaid", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "baseStrategy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "baseStrategyWithdrawalBuffer", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseStrategyDepositThreshold", + "type": "uint256" + }, + { + "internalType": "address", + "name": "dToken", + "type": "address" + } + ], + "name": "setBorrowToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_pauseBorrow", + "type": "bool" + }, + { + "internalType": "bool", + "name": "_pauseRepays", + "type": "bool" + } + ], + "name": "setGlobalPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "setStrategyDebtCeiling", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "bool", + "name": "isShuttingDown", + "type": "bool" + } + ], + "name": "setStrategyIsShuttingDown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "bool", + "name": "pauseBorrow", + "type": "bool" + }, + { + "internalType": "bool", + "name": "pauseRepays", + "type": "bool" + } + ], + "name": "setStrategyPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + } + ], + "name": "setStrategyUnderperformingThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newTpiOracle", + "type": "address" + } + ], + "name": "setTpiOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "shutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "strategies", + "outputs": [ + { + "internalType": "bool", + "name": "borrowPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "repaysPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isShuttingDown", + "type": "bool" + }, + { + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategiesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "strategyBalanceSheet", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "manualAdjustments", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "dTokenBalances", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "dTokenCreditBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "strategyDebtCeiling", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "strategyDetails", + "outputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "bool", + "name": "borrowPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "repaysPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isShuttingDown", + "type": "bool" + }, + { + "internalType": "int256", + "name": "underperformingEquityThreshold", + "type": "int256" + }, + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "debtCeiling", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "strategyEnabledBorrowTokens", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "name": "strategyTokenCredits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "totalAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tpiOracle", + "outputs": [ + { + "internalType": "contract ITreasuryPriceIndexOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryPriceIndex", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "internalType": "contract IERC20[]", + "name": "enableBorrowTokens", + "type": "address[]" + }, + { + "internalType": "contract IERC20[]", + "name": "disableBorrowTokens", + "type": "address[]" + } + ], + "name": "updateStrategyEnabledBorrowTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620054f5380380620054f583398101604081905262000034916200012d565b82826001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b03199081166001600160a01b039485161790915560018054909116918316919091179055600c805462010000600160b01b03191662010000939092169290920217905550620001779050565b80516001600160a01b03811681146200012857600080fd5b919050565b6000806000606084860312156200014357600080fd5b6200014e8462000110565b92506200015e6020850162000110565b91506200016e6040850162000110565b90509250925092565b61536e80620001876000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063754da37611610186578063bfccf0ec116100e3578063d352f49d11610097578063daee1e2a11610071578063daee1e2a1461077d578063dd07270414610785578063e252a65f1461079857600080fd5b8063d352f49d14610729578063d9a349c11461073c578063daeccc791461074f57600080fd5b8063cbfc8f1a116100c8578063cbfc8f1a1461067a578063cce2f3fb1461068d578063cd800ba6146106a057600080fd5b8063bfccf0ec14610647578063c34c08e51461065a57600080fd5b8063a01174061161013a578063a7229fd91161011f578063a7229fd91461060e578063b683674f14610621578063bcfb2b7a1461063457600080fd5b8063a0117406146105c0578063a3a96872146105eb57600080fd5b8063815666a91161016b578063815666a914610568578063884c5a57146105755780639ed384f11461059b57600080fd5b8063754da3761461054d5780638112c4af1461056057600080fd5b806323289f601161023f57806345d8db7a116101f357806367028f64116101cd57806367028f64146105155780636c665a5514610527578063729cf3ed1461053a57600080fd5b806345d8db7a146104c95780634bb82936146104dc5780635ceae9c41461050257600080fd5b806333e18cd11161022457806333e18cd11461040757806338a631831461041c57806339ebf8231461046157600080fd5b806323289f60146103b557806325829410146103c857600080fd5b806316a2d659116102965780631b46fc471161027b5780631b46fc47146103875780631b8222ec1461039a5780631f211405146103ad57600080fd5b806316a2d659146103445780631810fe7f1461036a57600080fd5b806307f184f1116102c757806307f184f11461030b578063119e19031461031e5780631504db6a1461033157600080fd5b8063032ef901146102e357806303b65d7f146102f8575b600080fd5b6102f66102f1366004614815565b6107ab565b005b6102f6610306366004614832565b61085a565b6102f661031936600461488d565b610958565b6102f661032c3660046148aa565b610a90565b6102f661033f366004614914565b610b8a565b610357610352366004614970565b610e59565b6040519081526020015b60405180910390f35b6003546103779060ff1681565b6040519015158152602001610361565b6102f66103953660046149e3565b610f8a565b6103576103a8366004614970565b611173565b6102f6611239565b6102f66103c3366004614a66565b611358565b604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290516103619190614b33565b61040f6115a4565b6040516103619190614b46565b60005461043c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610361565b6104a161046f36600461488d565b6005602052600090815260409020805460019091015460ff808316926101008104821692620100009091049091169084565b6040805194151585529215156020850152901515918301919091526060820152608001610361565b6103776104d7366004614970565b6115b5565b600c5461043c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6102f6610510366004614ba0565b6115f5565b600c5461037790610100900460ff1681565b6102f6610535366004614ba0565b6116be565b610357610548366004614970565b611842565b6102f661055b36600461488d565b61197c565b6102f6611b77565b600c546103779060ff1681565b61058861058336600461488d565b611cb7565b6040516103619796959493929190614c3e565b6105a3611f49565b6040516bffffffffffffffffffffffff9091168152602001610361565b6103576105ce366004614970565b600b60209081526000928352604080842090915290825290205481565b6105fe6105f936600461488d565b611fdc565b6040516103619493929190614ca3565b6102f661061c366004614d38565b612396565b61035761062f36600461488d565b612487565b6102f6610642366004614d79565b6126a4565b6102f6610655366004614da5565b612779565b60015461043c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f6610688366004614dfa565b612978565b6102f661069b36600461488d565b612a9b565b6106ed6106ae36600461488d565b600860205260009081526040902080546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9283169391921684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815260208101949094528301919091529091166060820152608001610361565b6102f6610737366004614d38565b612ddc565b6102f661074a36600461488d565b61303b565b61037761075d366004614e6f565b600260209081526000928352604080842090915290825290205460ff1681565b61040f613180565b610357610793366004614970565b61318c565b6102f66107a636600461488d565b61326f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107fc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b610888336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6108be576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051831515815282151560208201527fccba6ba809fe045e12cedcab3161918aea8b6d4bb96dfb2eee23ceb3c383fabf910160405180910390a1600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921761010091151591909102179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109a9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166109f6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610abe336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b610af4576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610aff8361348d565b90508273ffffffffffffffffffffffffffffffffffffffff167f60baa5385a21b8af1697a19328702aecd61b4a85ea6f0e14853b87d6805fdd0383604051610b4b911515815260200190565b60405180910390a2805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff90921691909117905550565b610bb8336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b610bee576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bf96006856134f8565b610c2f576040517ff2a5f75a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff167fdd9c43e14c8cb9de5f9aec17439649015b4ba54d23aa461d417b27e0f937b54184604051610c7791815260200190565b60405180910390a273ffffffffffffffffffffffffffffffffffffffff84166000908152600560205260408120600181018590559036908390805b82811015610e4e57868682818110610ccc57610ccc614ea4565b604002919091019450610ce49050602085018561488d565b91508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fd65a128686ffb988420a6de41416e3da5e3d75471b029a830e9f46f25f79bed48760020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548760200135604051610d93929190918252602082015260400190565b60405180910390a3610da6600983613521565b610ddc576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600286016020908152604080832082880135905560038801909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610e4781614f02565b9050610cb2565b505050505050505050565b600080610e6583613550565b60038101546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152929350600092909116906370a0823190602401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f019190614f3a565b90506000610f0e8661348d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260038201602052604090205490915060ff16610f72576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f7e868287856135bb565b93505050505b92915050565b610fb8336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b610fee576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ff98661348d565b9050600080855b808310156110d25787878481811061101a5761101a614ea4565b905060200201602081019061102f919061488d565b915061103c600983613521565b611072576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600385016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110cb83614f02565b9250611000565b5060009150835b80831015610e4e5760008460030160008888878181106110fb576110fb614ea4565b9050602002016020810190611110919061488d565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561116c83614f02565b92506110d9565b60008061117f84613550565b60038101546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529293509116906370a0823190602401602060405180830381865afa1580156111f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112179190614f3a565b9150611227338486848687613623565b6112328482856137fd565b5092915050565b60045473ffffffffffffffffffffffffffffffffffffffff16331461128a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036112db576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b611386336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6113bc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516611409576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611456576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82821015611490576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8681168252602082018690529181018490528282166060820152908616907fae7b9dfb540ed96b9eaaec04a978ffc3ca7f9ab7b09922f3c259cba2603888189060800160405180910390a26040805160808101825273ffffffffffffffffffffffffffffffffffffffff80871682526020808301878152838501878152868416606086019081528b85166000908152600890945295909220935184549084167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161785559051600185015590516002840155925160039092018054929091169190921617905561159c6009866134f8565b505050505050565b60606115b06009613a50565b905090565b60006115c08361348d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600391909101602052604090205460ff16905092915050565b600061160084613550565b60038101546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152929350600092909116906370a0823190602401602060405180830381865afa158015611678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169c9190614f3a565b90506116ac338487858886613623565b6116b78583856137fd565b5050505050565b60006116c984613550565b905060006116d63361348d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260038201602052604090205490915060ff1661173a576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156117ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cf9190614f3a565b905060006117df338489856135bb565b90508086111561182a576040517f124ffd6700000000000000000000000000000000000000000000000000000000815260048101829052602481018790526044015b60405180910390fd5b61183933888787878b88613a5d565b50505050505050565b60008061184e84613550565b9050600061185b3361348d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260038201602052604090205490915060ff166118bf576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119549190614f3a565b9050611962338388846135bb565b935061197333878786868987613a5d565b50505092915050565b6119aa336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6119e0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611a2d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff16639ed384f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614f53565b6bffffffffffffffffffffffff16600003611ae8576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f73242cc206066336b9be50f9cf5905a0f722ce90450a2948f6b14d664a6ff0a090600090a2600c805473ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff90921691909117905550565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611bcd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611c1e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060806000808080848782611ccb8261348d565b90508173ffffffffffffffffffffffffffffffffffffffff1663e173ad256040518163ffffffff1660e01b8152600401600060405180830381865afa158015611d18573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d5e9190810190615028565b98508173ffffffffffffffffffffffffffffffffffffffff1663a25db5e26040518163ffffffff1660e01b8152600401600060405180830381865afa158015611dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611df19190810190615028565b8154600183015491995060ff8082169950610100820481169850620100009091041695509350600080611e246009613bea565b90508067ffffffffffffffff811115611e3f57611e3f614f81565b604051908082528060200260200182016040528015611e8457816020015b6040805180820190915260008082526020820152815260200190600190039081611e5d5790505b50945060005b81811015611f3957611e9d600982613bf4565b925060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018560020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815250868281518110611f1d57611f1d614ea4565b602002602001018190525080611f3290614f02565b9050611e8a565b5050505050919395979092949650565b6000600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ed384f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b09190614f53565b60608060608060008590508073ffffffffffffffffffffffffffffffffffffffff1663ce5c715a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612032573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261207891908101906150fe565b94508073ffffffffffffffffffffffffffffffffffffffff1663e32145346040518163ffffffff1660e01b8152600401600060405180830381865afa1580156120c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261210b91908101906151b7565b935060006121196009613bea565b90508067ffffffffffffffff81111561213457612134614f81565b60405190808252806020026020018201604052801561217957816020015b60408051808201909152600080825260208201528152602001906001900390816121525790505b5093508067ffffffffffffffff81111561219557612195614f81565b6040519080825280602002602001820160405280156121da57816020015b60408051808201909152600080825260208201528152602001906001900390816121b35790505b5073ffffffffffffffffffffffffffffffffffffffff88166000908152600b6020526040812091945090815b8381101561238a57612219600982613bf4565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff838116808352600090815260086020908152908490206003015493517f70a082310000000000000000000000000000000000000000000000000000000081528f8316600482015294975091939184019216906370a0823190602401602060405180830381865afa1580156122af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d39190614f3a565b8152508782815181106122e8576122e8614ea4565b602002602001018190525060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481525086828151811061236e5761236e614ea4565b60200260200101819052508061238390614f02565b9050612206565b50505050509193509193565b6123c4336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6123fa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161245991815260200190565b60405180910390a361248273ffffffffffffffffffffffffffffffffffffffff84168383613c00565b505050565b60008061249383613550565b805490915060009073ffffffffffffffffffffffffffffffffffffffff1680156126015760008173ffffffffffffffffffffffffffffffffffffffff1663ce5c715a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612504573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261254a91908101906150fe565b9050805160011415806125a757508573ffffffffffffffffffffffffffffffffffffffff168160008151811061258257612582614ea4565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614155b156125de576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000815181106125f1576125f1614ea4565b6020026020010151602001519250505b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561266d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126919190614f3a565b61269b919061526b565b95945050505050565b6126d2336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b612708576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127138361348d565b90508273ffffffffffffffffffffffffffffffffffffffff167fddbf73e14581e1d6860f6a3593034807600f421d4239471b76c46d2c00bba96582600101548460405161276a929190918252602082015260400190565b60405180910390a26001015550565b6127a7336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6127dd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661282a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b8281101561159c5784848281811061285d5761285d614ea4565b905060400201803603810190612873919061527e565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561297181614f02565b9050612843565b6129a6336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6129dc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006129e78461348d565b604080518515158152841515602082015291925073ffffffffffffffffffffffffffffffffffffffff8616917fc22fcb5fd9141f665a38139d347bcbcced8d2969afdcde9571ce86da3283c29d910160405180910390a280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16929092176101009115159190910217905550565b3373ffffffffffffffffffffffffffffffffffffffff821614801590612aec5750612aea336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b155b15612b23576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b2e8261348d565b805490915062010000900460ff16612b72576040517fcad5576c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040812081612ba26009613bea565b90506000805b82811015612d4057612bbb600982613bf4565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260086020526040908190206003015490517f7e9d2ac10000000000000000000000000000000000000000000000000000000081528a831660048201529297501690637e9d2ac1906024016020604051808303816000875af1158015612c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c659190614f3a565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260208881526040918290205482519081529081018590529395509092918a16917f2d4d5832465151d4dce5752beab9f60c01740a442d52a22887abd4f70b13e34b910160405180910390a373ffffffffffffffffffffffffffffffffffffffff85166000908152600287016020908152604080832083905560038901825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590869052812055612d3981614f02565b9050612ba8565b5060405173ffffffffffffffffffffffffffffffffffffffff8716907f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea490600090a273ffffffffffffffffffffffffffffffffffffffff8616600090815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016815560010155611839600687613cd4565b612e0a336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b612e40576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e4b600983613521565b612e81576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612e8c8461348d565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260038201602052604090205490915060ff16612ef0576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff838116600081815260028401602090815260409182902054825190815290810186905291928716917fd65a128686ffb988420a6de41416e3da5e3d75471b029a830e9f46f25f79bed4910160405180910390a373ffffffffffffffffffffffffffffffffffffffff8085166000908152600b6020908152604080832093871683529290522054612f96908390613cf6565b73ffffffffffffffffffffffffffffffffffffffff838116600081815260028401602052604090819020859055517f1ed760b400000000000000000000000000000000000000000000000000000000815260048101919091526024810184905290851690631ed760b490604401600060405180830381600087803b15801561301d57600080fd5b505af1158015613031573d6000803e3d6000fd5b5050505050505050565b613069336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b61309f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166130ec576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606115b06006613a50565b6000613199600983613521565b6131cf576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006131da8461348d565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260038201602052604090205490915060ff1661323e576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260029091016020526040902054905092915050565b61329d336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6132d3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6132de600982613521565b613314576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4b8ac63c38f57c8602118d0c39a3bb0a9607e924c7bf802d8f6be9a850f81db590600090a273ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018390556002820192909255600301805490911690556133c6600982613cd4565b5050565b60035460009060ff16156133fc575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610f84565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480613477575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561348457506001610f84565b50600092915050565b600061349a600683613521565b6134d0576040517ff597935e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902090565b600061351a8373ffffffffffffffffffffffffffffffffffffffff8416613d00565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054151561351a565b600061355d600983613521565b613593576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff16600090815260086020526040902090565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526002860160209081526040808320549489168352600b825280832093835292905290812054909190808201848111613611576000613615565b8481035b93505050505b949350505050565b8160000361365d576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c54610100900460ff161561369f576040517fa2c5903900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006136aa8661348d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260038201602052604090205490915060ff1661370e576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054610100900460ff161561374f576040517fa2c5903900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f4cdde6e09bb755c9a5589ebaec640bbfedff1362d4b255ebf8339782b9942faa866040516137c591815260200190565b60405180910390a46137db868287878787613d4f565b61183973ffffffffffffffffffffffffffffffffffffffff8616883086613efd565b815473ffffffffffffffffffffffffffffffffffffffff16801580159061385057508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15613a4a576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa1580156138c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e69190614f3a565b905083600201548111156116b757600184015460038501546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529290930392600092909116906370a0823190602401602060405180830381865afa158015613973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139979190614f3a565b90506139a68387878585613f5b565b6139c773ffffffffffffffffffffffffffffffffffffffff87168484613c00565b6040517ff40902560000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff84169063f409025690602401600060405180830381600087803b158015613a2f57600080fd5b505af1158015613a43573d6000803e3d6000fd5b5050505050505b50505050565b6060600061351a83614104565b81600003613a97576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5460ff1615613ad4576040517f12b0cb4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825460ff1615613b10576040517f12b0cb4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825462010000900460ff1615613b52576040517f0f3c386700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f7752d0a9575185e5b5829ca2b99ad3129496a322603ef76773ee2ae26250188685604051613bc891815260200190565b60405180910390a4613bdd8787868585613f5b565b6118398787868886614160565b6000610f84825490565b600061351a8383614467565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526124829084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614491565b600061351a8373ffffffffffffffffffffffffffffffffffffffff84166145a0565b612482818361526b565b6000818152600183016020526040812054613d4757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610f84565b506000610f84565b73ffffffffffffffffffffffffffffffffffffffff8681166000818152600b6020908152604080832089861684529182905280832054600389015491517f9dc29fac00000000000000000000000000000000000000000000000000000000815260048101959095526024850188905291949193911690639dc29fac906044016020604051808303816000875af1158015613ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e119190614f3a565b93849003939050808503858214613e815773ffffffffffffffffffffffffffffffffffffffff8816600090815260028a01602052604090205492810192613e589084613cf6565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020859052604090208390555b8773ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f9f3631b9d535e10256e4f8174e8200f0481e76a7a75d22fd9b622317d4cd827a8588604051613ee9929190918252602082015260400190565b60405180910390a350505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613a4a9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613c52565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600b602090815260408083209388168352908390529020548084111561405d5760038501546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015283870360248301819052958601959216906340c10f1990604401600060405180830381600087803b15801561401457600080fd5b505af1158015614028573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff88166000908152602085905260408120819055925061408b915050565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260208390526040902090849003908190555b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9f3631b9d535e10256e4f8174e8200f0481e76a7a75d22fd9b622317d4cd827a83866040516140f3929190918252602082015260400190565b60405180910390a350505050505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561415457602002820191906000526020600020905b815481526020019060010190808311614140575b50505050509050919050565b82546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9182169182916000918816906370a0823190602401602060405180830381865afa1580156141d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f99190614f3a565b905073ffffffffffffffffffffffffffffffffffffffff82161580159061424c57508773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156143e657600084821161426257818503614265565b60005b905080156143e457600187015461427c908261526b565b6040517feecb7c1b0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff86169063eecb7c1b906024016020604051808303816000875af11580156142ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143139190614f3a565b905080156143e257614325818461526b565b73ffffffffffffffffffffffffffffffffffffffff8581166000818152600560205260409081902060038d015491517f70a0823100000000000000000000000000000000000000000000000000000000815260048101939093529396506143e293889390928e928e9288929116906370a0823190602401602060405180830381865afa1580156143b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143dd9190614f3a565b613d4f565b505b505b80841115614446576040517fdb42144d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201526024810185905260448101829052606401611821565b61303173ffffffffffffffffffffffffffffffffffffffff88168686613c00565b600082600001828154811061447e5761447e614ea4565b9060005260206000200154905092915050565b60006144f3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166146939092919063ffffffff16565b905080516000148061451457508080602001905181019061451491906152bd565b612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611821565b600081815260018301602052604081205480156146895760006145c46001836152da565b85549091506000906145d8906001906152da565b905081811461463d5760008660000182815481106145f8576145f8614ea4565b906000526020600020015490508087600001848154811061461b5761461b614ea4565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061464e5761464e6152ed565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610f84565b6000915050610f84565b606061361b8484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516146c7919061531c565b60006040518083038185875af1925050503d8060008114614704576040519150601f19603f3d011682016040523d82523d6000602084013e614709565b606091505b509150915061471a87838387614725565b979650505050505050565b606083156147bb5782516000036147b45773ffffffffffffffffffffffffffffffffffffffff85163b6147b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611821565b508161361b565b61361b83838151156147d05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219190614b33565b801515811461481257600080fd5b50565b60006020828403121561482757600080fd5b813561351a81614804565b6000806040838503121561484557600080fd5b823561485081614804565b9150602083013561486081614804565b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461481257600080fd5b60006020828403121561489f57600080fd5b813561351a8161486b565b600080604083850312156148bd57600080fd5b82356148508161486b565b60008083601f8401126148da57600080fd5b50813567ffffffffffffffff8111156148f257600080fd5b6020830191508360208260061b850101111561490d57600080fd5b9250929050565b6000806000806060858703121561492a57600080fd5b84356149358161486b565b935060208501359250604085013567ffffffffffffffff81111561495857600080fd5b614964878288016148c8565b95989497509550505050565b6000806040838503121561498357600080fd5b823561498e8161486b565b915060208301356148608161486b565b60008083601f8401126149b057600080fd5b50813567ffffffffffffffff8111156149c857600080fd5b6020830191508360208260051b850101111561490d57600080fd5b6000806000806000606086880312156149fb57600080fd5b8535614a068161486b565b9450602086013567ffffffffffffffff80821115614a2357600080fd5b614a2f89838a0161499e565b90965094506040880135915080821115614a4857600080fd5b50614a558882890161499e565b969995985093965092949392505050565b600080600080600060a08688031215614a7e57600080fd5b8535614a898161486b565b94506020860135614a998161486b565b935060408601359250606086013591506080860135614ab78161486b565b809150509295509295909350565b60005b83811015614ae0578181015183820152602001614ac8565b50506000910152565b60008151808452614b01816020860160208601614ac5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061351a6020830184614ae9565b6020808252825182820181905260009190848201906040850190845b81811015614b9457835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614b62565b50909695505050505050565b600080600060608486031215614bb557600080fd5b8335614bc08161486b565b9250602084013591506040840135614bd78161486b565b809150509250925092565b600081518084526020808501945080840160005b83811015614c33578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101614bf6565b509495945050505050565b60e081526000614c5160e083018a614ae9565b8281036020840152614c63818a614ae9565b90508715156040840152861515606084015285151560808401528460a084015282810360c0840152614c958185614be2565b9a9950505050505050505050565b608081526000614cb66080830187614be2565b82810360208481019190915286518083528782019282019060005b81811015614d0e578451805173ffffffffffffffffffffffffffffffffffffffff1684528401518484015293830193604090920191600101614cd1565b50508481036040860152614d228188614be2565b92505050828103606084015261471a8185614be2565b600080600060608486031215614d4d57600080fd5b8335614d588161486b565b92506020840135614d688161486b565b929592945050506040919091013590565b60008060408385031215614d8c57600080fd5b8235614d978161486b565b946020939093013593505050565b600080600060408486031215614dba57600080fd5b8335614dc58161486b565b9250602084013567ffffffffffffffff811115614de157600080fd5b614ded868287016148c8565b9497909650939450505050565b600080600060608486031215614e0f57600080fd5b8335614e1a8161486b565b92506020840135614e2a81614804565b91506040840135614bd781614804565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114614e6a57600080fd5b919050565b60008060408385031215614e8257600080fd5b8235614e8d8161486b565b9150614e9b60208401614e3a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f3357614f33614ed3565b5060010190565b600060208284031215614f4c57600080fd5b5051919050565b600060208284031215614f6557600080fd5b81516bffffffffffffffffffffffff8116811461351a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614fd357614fd3614f81565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561502057615020614f81565b604052919050565b60006020828403121561503a57600080fd5b815167ffffffffffffffff8082111561505257600080fd5b818401915084601f83011261506657600080fd5b81518181111561507857615078614f81565b6150a960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614fd9565b91508082528560208285010111156150c057600080fd5b6150d1816020840160208601614ac5565b50949350505050565b600067ffffffffffffffff8211156150f4576150f4614f81565b5060051b60200190565b6000602080838503121561511157600080fd5b825167ffffffffffffffff81111561512857600080fd5b8301601f8101851361513957600080fd5b805161514c615147826150da565b614fd9565b81815260069190911b8201830190838101908783111561516b57600080fd5b928401925b8284101561471a57604084890312156151895760008081fd5b615191614fb0565b845161519c8161486b565b81528486015186820152825260409093019290840190615170565b600060208083850312156151ca57600080fd5b825167ffffffffffffffff8111156151e157600080fd5b8301601f810185136151f257600080fd5b8051615200615147826150da565b81815260069190911b8201830190838101908783111561521f57600080fd5b928401925b8284101561471a576040848903121561523d5760008081fd5b615245614fb0565b84516152508161486b565b81528486015186820152825260409093019290840190615224565b80820180821115610f8457610f84614ed3565b60006040828403121561529057600080fd5b615298614fb0565b6152a183614e3a565b815260208301356152b181614804565b60208201529392505050565b6000602082840312156152cf57600080fd5b815161351a81614804565b81810381811115610f8457610f84614ed3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000825161532e818460208701614ac5565b919091019291505056fea264697066735822122057fb679cc892554359be0032ee0b449f1092c7e9a122bbb19680be4a7e154b7d64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102de5760003560e01c8063754da37611610186578063bfccf0ec116100e3578063d352f49d11610097578063daee1e2a11610071578063daee1e2a1461077d578063dd07270414610785578063e252a65f1461079857600080fd5b8063d352f49d14610729578063d9a349c11461073c578063daeccc791461074f57600080fd5b8063cbfc8f1a116100c8578063cbfc8f1a1461067a578063cce2f3fb1461068d578063cd800ba6146106a057600080fd5b8063bfccf0ec14610647578063c34c08e51461065a57600080fd5b8063a01174061161013a578063a7229fd91161011f578063a7229fd91461060e578063b683674f14610621578063bcfb2b7a1461063457600080fd5b8063a0117406146105c0578063a3a96872146105eb57600080fd5b8063815666a91161016b578063815666a914610568578063884c5a57146105755780639ed384f11461059b57600080fd5b8063754da3761461054d5780638112c4af1461056057600080fd5b806323289f601161023f57806345d8db7a116101f357806367028f64116101cd57806367028f64146105155780636c665a5514610527578063729cf3ed1461053a57600080fd5b806345d8db7a146104c95780634bb82936146104dc5780635ceae9c41461050257600080fd5b806333e18cd11161022457806333e18cd11461040757806338a631831461041c57806339ebf8231461046157600080fd5b806323289f60146103b557806325829410146103c857600080fd5b806316a2d659116102965780631b46fc471161027b5780631b46fc47146103875780631b8222ec1461039a5780631f211405146103ad57600080fd5b806316a2d659146103445780631810fe7f1461036a57600080fd5b806307f184f1116102c757806307f184f11461030b578063119e19031461031e5780631504db6a1461033157600080fd5b8063032ef901146102e357806303b65d7f146102f8575b600080fd5b6102f66102f1366004614815565b6107ab565b005b6102f6610306366004614832565b61085a565b6102f661031936600461488d565b610958565b6102f661032c3660046148aa565b610a90565b6102f661033f366004614914565b610b8a565b610357610352366004614970565b610e59565b6040519081526020015b60405180910390f35b6003546103779060ff1681565b6040519015158152602001610361565b6102f66103953660046149e3565b610f8a565b6103576103a8366004614970565b611173565b6102f6611239565b6102f66103c3366004614a66565b611358565b604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290516103619190614b33565b61040f6115a4565b6040516103619190614b46565b60005461043c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610361565b6104a161046f36600461488d565b6005602052600090815260409020805460019091015460ff808316926101008104821692620100009091049091169084565b6040805194151585529215156020850152901515918301919091526060820152608001610361565b6103776104d7366004614970565b6115b5565b600c5461043c9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6102f6610510366004614ba0565b6115f5565b600c5461037790610100900460ff1681565b6102f6610535366004614ba0565b6116be565b610357610548366004614970565b611842565b6102f661055b36600461488d565b61197c565b6102f6611b77565b600c546103779060ff1681565b61058861058336600461488d565b611cb7565b6040516103619796959493929190614c3e565b6105a3611f49565b6040516bffffffffffffffffffffffff9091168152602001610361565b6103576105ce366004614970565b600b60209081526000928352604080842090915290825290205481565b6105fe6105f936600461488d565b611fdc565b6040516103619493929190614ca3565b6102f661061c366004614d38565b612396565b61035761062f36600461488d565b612487565b6102f6610642366004614d79565b6126a4565b6102f6610655366004614da5565b612779565b60015461043c9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f6610688366004614dfa565b612978565b6102f661069b36600461488d565b612a9b565b6106ed6106ae36600461488d565b600860205260009081526040902080546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9283169391921684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815260208101949094528301919091529091166060820152608001610361565b6102f6610737366004614d38565b612ddc565b6102f661074a36600461488d565b61303b565b61037761075d366004614e6f565b600260209081526000928352604080842090915290825290205460ff1681565b61040f613180565b610357610793366004614970565b61318c565b6102f66107a636600461488d565b61326f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107fc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b610888336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6108be576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051831515815282151560208201527fccba6ba809fe045e12cedcab3161918aea8b6d4bb96dfb2eee23ceb3c383fabf910160405180910390a1600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921761010091151591909102179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109a9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166109f6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610abe336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b610af4576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610aff8361348d565b90508273ffffffffffffffffffffffffffffffffffffffff167f60baa5385a21b8af1697a19328702aecd61b4a85ea6f0e14853b87d6805fdd0383604051610b4b911515815260200190565b60405180910390a2805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff90921691909117905550565b610bb8336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b610bee576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bf96006856134f8565b610c2f576040517ff2a5f75a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff167fdd9c43e14c8cb9de5f9aec17439649015b4ba54d23aa461d417b27e0f937b54184604051610c7791815260200190565b60405180910390a273ffffffffffffffffffffffffffffffffffffffff84166000908152600560205260408120600181018590559036908390805b82811015610e4e57868682818110610ccc57610ccc614ea4565b604002919091019450610ce49050602085018561488d565b91508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fd65a128686ffb988420a6de41416e3da5e3d75471b029a830e9f46f25f79bed48760020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548760200135604051610d93929190918252602082015260400190565b60405180910390a3610da6600983613521565b610ddc576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600286016020908152604080832082880135905560038801909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610e4781614f02565b9050610cb2565b505050505050505050565b600080610e6583613550565b60038101546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152929350600092909116906370a0823190602401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f019190614f3a565b90506000610f0e8661348d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260038201602052604090205490915060ff16610f72576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f7e868287856135bb565b93505050505b92915050565b610fb8336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b610fee576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ff98661348d565b9050600080855b808310156110d25787878481811061101a5761101a614ea4565b905060200201602081019061102f919061488d565b915061103c600983613521565b611072576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600385016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556110cb83614f02565b9250611000565b5060009150835b80831015610e4e5760008460030160008888878181106110fb576110fb614ea4565b9050602002016020810190611110919061488d565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561116c83614f02565b92506110d9565b60008061117f84613550565b60038101546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529293509116906370a0823190602401602060405180830381865afa1580156111f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112179190614f3a565b9150611227338486848687613623565b6112328482856137fd565b5092915050565b60045473ffffffffffffffffffffffffffffffffffffffff16331461128a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036112db576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b611386336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6113bc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516611409576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611456576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82821015611490576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8681168252602082018690529181018490528282166060820152908616907fae7b9dfb540ed96b9eaaec04a978ffc3ca7f9ab7b09922f3c259cba2603888189060800160405180910390a26040805160808101825273ffffffffffffffffffffffffffffffffffffffff80871682526020808301878152838501878152868416606086019081528b85166000908152600890945295909220935184549084167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161785559051600185015590516002840155925160039092018054929091169190921617905561159c6009866134f8565b505050505050565b60606115b06009613a50565b905090565b60006115c08361348d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600391909101602052604090205460ff16905092915050565b600061160084613550565b60038101546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152929350600092909116906370a0823190602401602060405180830381865afa158015611678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169c9190614f3a565b90506116ac338487858886613623565b6116b78583856137fd565b5050505050565b60006116c984613550565b905060006116d63361348d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260038201602052604090205490915060ff1661173a576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156117ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cf9190614f3a565b905060006117df338489856135bb565b90508086111561182a576040517f124ffd6700000000000000000000000000000000000000000000000000000000815260048101829052602481018790526044015b60405180910390fd5b61183933888787878b88613a5d565b50505050505050565b60008061184e84613550565b9050600061185b3361348d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260038201602052604090205490915060ff166118bf576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119549190614f3a565b9050611962338388846135bb565b935061197333878786868987613a5d565b50505092915050565b6119aa336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6119e0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611a2d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff16639ed384f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614f53565b6bffffffffffffffffffffffff16600003611ae8576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f73242cc206066336b9be50f9cf5905a0f722ce90450a2948f6b14d664a6ff0a090600090a2600c805473ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff90921691909117905550565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611bcd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611c1e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060806000808080848782611ccb8261348d565b90508173ffffffffffffffffffffffffffffffffffffffff1663e173ad256040518163ffffffff1660e01b8152600401600060405180830381865afa158015611d18573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d5e9190810190615028565b98508173ffffffffffffffffffffffffffffffffffffffff1663a25db5e26040518163ffffffff1660e01b8152600401600060405180830381865afa158015611dab573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611df19190810190615028565b8154600183015491995060ff8082169950610100820481169850620100009091041695509350600080611e246009613bea565b90508067ffffffffffffffff811115611e3f57611e3f614f81565b604051908082528060200260200182016040528015611e8457816020015b6040805180820190915260008082526020820152815260200190600190039081611e5d5790505b50945060005b81811015611f3957611e9d600982613bf4565b925060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018560020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815250868281518110611f1d57611f1d614ea4565b602002602001018190525080611f3290614f02565b9050611e8a565b5050505050919395979092949650565b6000600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ed384f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b09190614f53565b60608060608060008590508073ffffffffffffffffffffffffffffffffffffffff1663ce5c715a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612032573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261207891908101906150fe565b94508073ffffffffffffffffffffffffffffffffffffffff1663e32145346040518163ffffffff1660e01b8152600401600060405180830381865afa1580156120c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261210b91908101906151b7565b935060006121196009613bea565b90508067ffffffffffffffff81111561213457612134614f81565b60405190808252806020026020018201604052801561217957816020015b60408051808201909152600080825260208201528152602001906001900390816121525790505b5093508067ffffffffffffffff81111561219557612195614f81565b6040519080825280602002602001820160405280156121da57816020015b60408051808201909152600080825260208201528152602001906001900390816121b35790505b5073ffffffffffffffffffffffffffffffffffffffff88166000908152600b6020526040812091945090815b8381101561238a57612219600982613bf4565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff838116808352600090815260086020908152908490206003015493517f70a082310000000000000000000000000000000000000000000000000000000081528f8316600482015294975091939184019216906370a0823190602401602060405180830381865afa1580156122af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d39190614f3a565b8152508782815181106122e8576122e8614ea4565b602002602001018190525060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481525086828151811061236e5761236e614ea4565b60200260200101819052508061238390614f02565b9050612206565b50505050509193509193565b6123c4336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6123fa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161245991815260200190565b60405180910390a361248273ffffffffffffffffffffffffffffffffffffffff84168383613c00565b505050565b60008061249383613550565b805490915060009073ffffffffffffffffffffffffffffffffffffffff1680156126015760008173ffffffffffffffffffffffffffffffffffffffff1663ce5c715a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612504573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261254a91908101906150fe565b9050805160011415806125a757508573ffffffffffffffffffffffffffffffffffffffff168160008151811061258257612582614ea4565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614155b156125de576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000815181106125f1576125f1614ea4565b6020026020010151602001519250505b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561266d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126919190614f3a565b61269b919061526b565b95945050505050565b6126d2336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b612708576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127138361348d565b90508273ffffffffffffffffffffffffffffffffffffffff167fddbf73e14581e1d6860f6a3593034807600f421d4239471b76c46d2c00bba96582600101548460405161276a929190918252602082015260400190565b60405180910390a26001015550565b6127a7336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6127dd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661282a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b8281101561159c5784848281811061285d5761285d614ea4565b905060400201803603810190612873919061527e565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561297181614f02565b9050612843565b6129a6336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6129dc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006129e78461348d565b604080518515158152841515602082015291925073ffffffffffffffffffffffffffffffffffffffff8616917fc22fcb5fd9141f665a38139d347bcbcced8d2969afdcde9571ce86da3283c29d910160405180910390a280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16929092176101009115159190910217905550565b3373ffffffffffffffffffffffffffffffffffffffff821614801590612aec5750612aea336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b155b15612b23576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b2e8261348d565b805490915062010000900460ff16612b72576040517fcad5576c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040812081612ba26009613bea565b90506000805b82811015612d4057612bbb600982613bf4565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260086020526040908190206003015490517f7e9d2ac10000000000000000000000000000000000000000000000000000000081528a831660048201529297501690637e9d2ac1906024016020604051808303816000875af1158015612c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c659190614f3a565b73ffffffffffffffffffffffffffffffffffffffff808716600081815260208881526040918290205482519081529081018590529395509092918a16917f2d4d5832465151d4dce5752beab9f60c01740a442d52a22887abd4f70b13e34b910160405180910390a373ffffffffffffffffffffffffffffffffffffffff85166000908152600287016020908152604080832083905560038901825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590869052812055612d3981614f02565b9050612ba8565b5060405173ffffffffffffffffffffffffffffffffffffffff8716907f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea490600090a273ffffffffffffffffffffffffffffffffffffffff8616600090815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016815560010155611839600687613cd4565b612e0a336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b612e40576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e4b600983613521565b612e81576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612e8c8461348d565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260038201602052604090205490915060ff16612ef0576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff838116600081815260028401602090815260409182902054825190815290810186905291928716917fd65a128686ffb988420a6de41416e3da5e3d75471b029a830e9f46f25f79bed4910160405180910390a373ffffffffffffffffffffffffffffffffffffffff8085166000908152600b6020908152604080832093871683529290522054612f96908390613cf6565b73ffffffffffffffffffffffffffffffffffffffff838116600081815260028401602052604090819020859055517f1ed760b400000000000000000000000000000000000000000000000000000000815260048101919091526024810184905290851690631ed760b490604401600060405180830381600087803b15801561301d57600080fd5b505af1158015613031573d6000803e3d6000fd5b5050505050505050565b613069336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b61309f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166130ec576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606115b06006613a50565b6000613199600983613521565b6131cf576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006131da8461348d565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260038201602052604090205490915060ff1661323e576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260029091016020526040902054905092915050565b61329d336000357fffffffff00000000000000000000000000000000000000000000000000000000166133ca565b6132d3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6132de600982613521565b613314576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4b8ac63c38f57c8602118d0c39a3bb0a9607e924c7bf802d8f6be9a850f81db590600090a273ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168255600182018390556002820192909255600301805490911690556133c6600982613cd4565b5050565b60035460009060ff16156133fc575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610f84565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480613477575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561348457506001610f84565b50600092915050565b600061349a600683613521565b6134d0576040517ff597935e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902090565b600061351a8373ffffffffffffffffffffffffffffffffffffffff8416613d00565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054151561351a565b600061355d600983613521565b613593576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff16600090815260086020526040902090565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526002860160209081526040808320549489168352600b825280832093835292905290812054909190808201848111613611576000613615565b8481035b93505050505b949350505050565b8160000361365d576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c54610100900460ff161561369f576040517fa2c5903900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006136aa8661348d565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260038201602052604090205490915060ff1661370e576040517f3f48c57a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054610100900460ff161561374f576040517fa2c5903900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f4cdde6e09bb755c9a5589ebaec640bbfedff1362d4b255ebf8339782b9942faa866040516137c591815260200190565b60405180910390a46137db868287878787613d4f565b61183973ffffffffffffffffffffffffffffffffffffffff8616883086613efd565b815473ffffffffffffffffffffffffffffffffffffffff16801580159061385057508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15613a4a576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa1580156138c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e69190614f3a565b905083600201548111156116b757600184015460038501546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529290930392600092909116906370a0823190602401602060405180830381865afa158015613973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139979190614f3a565b90506139a68387878585613f5b565b6139c773ffffffffffffffffffffffffffffffffffffffff87168484613c00565b6040517ff40902560000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff84169063f409025690602401600060405180830381600087803b158015613a2f57600080fd5b505af1158015613a43573d6000803e3d6000fd5b5050505050505b50505050565b6060600061351a83614104565b81600003613a97576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5460ff1615613ad4576040517f12b0cb4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825460ff1615613b10576040517f12b0cb4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825462010000900460ff1615613b52576040517f0f3c386700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f7752d0a9575185e5b5829ca2b99ad3129496a322603ef76773ee2ae26250188685604051613bc891815260200190565b60405180910390a4613bdd8787868585613f5b565b6118398787868886614160565b6000610f84825490565b600061351a8383614467565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526124829084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614491565b600061351a8373ffffffffffffffffffffffffffffffffffffffff84166145a0565b612482818361526b565b6000818152600183016020526040812054613d4757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610f84565b506000610f84565b73ffffffffffffffffffffffffffffffffffffffff8681166000818152600b6020908152604080832089861684529182905280832054600389015491517f9dc29fac00000000000000000000000000000000000000000000000000000000815260048101959095526024850188905291949193911690639dc29fac906044016020604051808303816000875af1158015613ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e119190614f3a565b93849003939050808503858214613e815773ffffffffffffffffffffffffffffffffffffffff8816600090815260028a01602052604090205492810192613e589084613cf6565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020859052604090208390555b8773ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f9f3631b9d535e10256e4f8174e8200f0481e76a7a75d22fd9b622317d4cd827a8588604051613ee9929190918252602082015260400190565b60405180910390a350505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613a4a9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613c52565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600b602090815260408083209388168352908390529020548084111561405d5760038501546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015283870360248301819052958601959216906340c10f1990604401600060405180830381600087803b15801561401457600080fd5b505af1158015614028573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff88166000908152602085905260408120819055925061408b915050565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260208390526040902090849003908190555b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9f3631b9d535e10256e4f8174e8200f0481e76a7a75d22fd9b622317d4cd827a83866040516140f3929190918252602082015260400190565b60405180910390a350505050505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561415457602002820191906000526020600020905b815481526020019060010190808311614140575b50505050509050919050565b82546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9182169182916000918816906370a0823190602401602060405180830381865afa1580156141d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f99190614f3a565b905073ffffffffffffffffffffffffffffffffffffffff82161580159061424c57508773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156143e657600084821161426257818503614265565b60005b905080156143e457600187015461427c908261526b565b6040517feecb7c1b0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff86169063eecb7c1b906024016020604051808303816000875af11580156142ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143139190614f3a565b905080156143e257614325818461526b565b73ffffffffffffffffffffffffffffffffffffffff8581166000818152600560205260409081902060038d015491517f70a0823100000000000000000000000000000000000000000000000000000000815260048101939093529396506143e293889390928e928e9288929116906370a0823190602401602060405180830381865afa1580156143b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143dd9190614f3a565b613d4f565b505b505b80841115614446576040517fdb42144d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201526024810185905260448101829052606401611821565b61303173ffffffffffffffffffffffffffffffffffffffff88168686613c00565b600082600001828154811061447e5761447e614ea4565b9060005260206000200154905092915050565b60006144f3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166146939092919063ffffffff16565b905080516000148061451457508080602001905181019061451491906152bd565b612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611821565b600081815260018301602052604081205480156146895760006145c46001836152da565b85549091506000906145d8906001906152da565b905081811461463d5760008660000182815481106145f8576145f8614ea4565b906000526020600020015490508087600001848154811061461b5761461b614ea4565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061464e5761464e6152ed565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610f84565b6000915050610f84565b606061361b8484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516146c7919061531c565b60006040518083038185875af1925050503d8060008114614704576040519150601f19603f3d011682016040523d82523d6000602084013e614709565b606091505b509150915061471a87838387614725565b979650505050505050565b606083156147bb5782516000036147b45773ffffffffffffffffffffffffffffffffffffffff85163b6147b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611821565b508161361b565b61361b83838151156147d05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219190614b33565b801515811461481257600080fd5b50565b60006020828403121561482757600080fd5b813561351a81614804565b6000806040838503121561484557600080fd5b823561485081614804565b9150602083013561486081614804565b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461481257600080fd5b60006020828403121561489f57600080fd5b813561351a8161486b565b600080604083850312156148bd57600080fd5b82356148508161486b565b60008083601f8401126148da57600080fd5b50813567ffffffffffffffff8111156148f257600080fd5b6020830191508360208260061b850101111561490d57600080fd5b9250929050565b6000806000806060858703121561492a57600080fd5b84356149358161486b565b935060208501359250604085013567ffffffffffffffff81111561495857600080fd5b614964878288016148c8565b95989497509550505050565b6000806040838503121561498357600080fd5b823561498e8161486b565b915060208301356148608161486b565b60008083601f8401126149b057600080fd5b50813567ffffffffffffffff8111156149c857600080fd5b6020830191508360208260051b850101111561490d57600080fd5b6000806000806000606086880312156149fb57600080fd5b8535614a068161486b565b9450602086013567ffffffffffffffff80821115614a2357600080fd5b614a2f89838a0161499e565b90965094506040880135915080821115614a4857600080fd5b50614a558882890161499e565b969995985093965092949392505050565b600080600080600060a08688031215614a7e57600080fd5b8535614a898161486b565b94506020860135614a998161486b565b935060408601359250606086013591506080860135614ab78161486b565b809150509295509295909350565b60005b83811015614ae0578181015183820152602001614ac8565b50506000910152565b60008151808452614b01816020860160208601614ac5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061351a6020830184614ae9565b6020808252825182820181905260009190848201906040850190845b81811015614b9457835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614b62565b50909695505050505050565b600080600060608486031215614bb557600080fd5b8335614bc08161486b565b9250602084013591506040840135614bd78161486b565b809150509250925092565b600081518084526020808501945080840160005b83811015614c33578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101614bf6565b509495945050505050565b60e081526000614c5160e083018a614ae9565b8281036020840152614c63818a614ae9565b90508715156040840152861515606084015285151560808401528460a084015282810360c0840152614c958185614be2565b9a9950505050505050505050565b608081526000614cb66080830187614be2565b82810360208481019190915286518083528782019282019060005b81811015614d0e578451805173ffffffffffffffffffffffffffffffffffffffff1684528401518484015293830193604090920191600101614cd1565b50508481036040860152614d228188614be2565b92505050828103606084015261471a8185614be2565b600080600060608486031215614d4d57600080fd5b8335614d588161486b565b92506020840135614d688161486b565b929592945050506040919091013590565b60008060408385031215614d8c57600080fd5b8235614d978161486b565b946020939093013593505050565b600080600060408486031215614dba57600080fd5b8335614dc58161486b565b9250602084013567ffffffffffffffff811115614de157600080fd5b614ded868287016148c8565b9497909650939450505050565b600080600060608486031215614e0f57600080fd5b8335614e1a8161486b565b92506020840135614e2a81614804565b91506040840135614bd781614804565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114614e6a57600080fd5b919050565b60008060408385031215614e8257600080fd5b8235614e8d8161486b565b9150614e9b60208401614e3a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f3357614f33614ed3565b5060010190565b600060208284031215614f4c57600080fd5b5051919050565b600060208284031215614f6557600080fd5b81516bffffffffffffffffffffffff8116811461351a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614fd357614fd3614f81565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561502057615020614f81565b604052919050565b60006020828403121561503a57600080fd5b815167ffffffffffffffff8082111561505257600080fd5b818401915084601f83011261506657600080fd5b81518181111561507857615078614f81565b6150a960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614fd9565b91508082528560208285010111156150c057600080fd5b6150d1816020840160208601614ac5565b50949350505050565b600067ffffffffffffffff8211156150f4576150f4614f81565b5060051b60200190565b6000602080838503121561511157600080fd5b825167ffffffffffffffff81111561512857600080fd5b8301601f8101851361513957600080fd5b805161514c615147826150da565b614fd9565b81815260069190911b8201830190838101908783111561516b57600080fd5b928401925b8284101561471a57604084890312156151895760008081fd5b615191614fb0565b845161519c8161486b565b81528486015186820152825260409093019290840190615170565b600060208083850312156151ca57600080fd5b825167ffffffffffffffff8111156151e157600080fd5b8301601f810185136151f257600080fd5b8051615200615147826150da565b81815260069190911b8201830190838101908783111561521f57600080fd5b928401925b8284101561471a576040848903121561523d5760008081fd5b615245614fb0565b84516152508161486b565b81528486015186820152825260409093019290840190615224565b80820180821115610f8457610f84614ed3565b60006040828403121561529057600080fd5b615298614fb0565b6152a183614e3a565b815260208301356152b181614804565b60208201529392505050565b6000602082840312156152cf57600080fd5b815161351a81614804565b81810381811115610f8457610f84614ed3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000825161532e818460208701614ac5565b919091019291505056fea264697066735822122057fb679cc892554359be0032ee0b449f1092c7e9a122bbb19680be4a7e154b7d64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/access/TempleElevatedAccess.sol/TempleElevatedAccess.json b/apps/dapp/abi/contracts/v2/access/TempleElevatedAccess.sol/TempleElevatedAccess.json new file mode 100644 index 000000000..8bc2b71ee --- /dev/null +++ b/apps/dapp/abi/contracts/v2/access/TempleElevatedAccess.sol/TempleElevatedAccess.json @@ -0,0 +1,293 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleElevatedAccess", + "sourceName": "contracts/v2/access/TempleElevatedAccess.sol", + "abi": [ + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol/TempleCircuitBreakerAllUsersPerPeriod.json b/apps/dapp/abi/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol/TempleCircuitBreakerAllUsersPerPeriod.json new file mode 100644 index 000000000..f0f67a058 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol/TempleCircuitBreakerAllUsersPerPeriod.json @@ -0,0 +1,552 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleCircuitBreakerAllUsersPerPeriod", + "sourceName": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_periodDuration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "_nBuckets", + "type": "uint32" + }, + { + "internalType": "uint128", + "name": "_cap", + "type": "uint128" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "totalRequested", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "cap", + "type": "uint128" + } + ], + "name": "CapBreached", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint128", + "name": "cap", + "type": "uint128" + } + ], + "name": "CapSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "periodDuration", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "nBuckets", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "cap", + "type": "uint128" + } + ], + "name": "ConfigSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "inputs": [], + "name": "MAX_BUCKETS", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "bucketIndex", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "buckets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentUtilisation", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nBuckets", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "periodDuration", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "preCheck", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "secondsPerBucket", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_periodDuration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "_nBuckets", + "type": "uint32" + }, + { + "internalType": "uint128", + "name": "_cap", + "type": "uint128" + } + ], + "name": "setConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "newCap", + "type": "uint128" + } + ], + "name": "updateCap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001bf938038062001bf98339810160408190526200003491620002fd565b84846001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055620000f2838383620000fd565b5050505050620003f5565b8263ffffffff166000036200012557604051631536c32360e21b815260040160405180910390fd5b600062000133838562000393565b63ffffffff1611156200015957604051633494a40d60e21b815260040160405180910390fd5b610fa063ffffffff831611156200018357604051633494a40d60e21b815260040160405180910390fd5b6005805463ffffffff808516600160801b0263ffffffff60801b199092169190911790915560048054918516600160a01b0263ffffffff60a01b19909216919091179055620001d38284620003b9565b600580547fffffffff00000000ffffffffffffffff0000000000000000000000000000000063ffffffff93909316600160a01b02929092167fffffffff0000000000000000ffffffff00000000000000000000000000000000909216919091176001600160801b03831617905560005b8263ffffffff1681101562000276576001600682610fa081106200026b576200026b620003df565b015560010162000243565b506040805163ffffffff8581168252841660208201526001600160801b0383168183015290517f9ecb31d34ba64f7242f8e6c17081f9236985a7bc47951f5ded0c975c43a4d8b59181900360600190a1505050565b80516001600160a01b0381168114620002e357600080fd5b919050565b805163ffffffff81168114620002e357600080fd5b600080600080600060a086880312156200031657600080fd5b6200032186620002cb565b94506200033160208701620002cb565b93506200034160408701620002e8565b92506200035160608701620002e8565b60808701519092506001600160801b03811681146200036f57600080fd5b809150509295509295909350565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff80841680620003ad57620003ad6200037d565b92169190910692915050565b600063ffffffff80841680620003d357620003d36200037d565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b6117f480620004056000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80636ae845ec116100d8578063b470aade1161008c578063d9a349c111610066578063d9a349c1146103a3578063daeccc79146103b6578063fc2c0c40146103e457600080fd5b8063b470aade14610348578063bfccf0ec14610370578063c34c08e51461038357600080fd5b806393edc024116100bd57806393edc024146103015780639adaafbf146103145780639b51fb0d1461032757600080fd5b80636ae845ec146102cd5780638112c4af146102f957600080fd5b80631f2114051161012f57806338a631831161011457806338a631831461024d578063421a835f146102925780635eaf665d146102a557600080fd5b80631f21140514610208578063355274ea1461021057600080fd5b806307feef6e1161016057806307feef6e146101a457806315aaea17146101e25780631810fe7f146101eb57600080fd5b8063032ef9011461017c57806307f184f114610191575b600080fd5b61018f61018a3660046113eb565b6103ec565b005b61018f61019f366004611431565b61049b565b6005546101c890700100000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6101c8610fa081565b6003546101f89060ff1681565b60405190151581526020016101d9565b61018f6105d3565b60055461022c906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101d9565b60005461026d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d9565b61018f6102a0366004611480565b6106f2565b6005546101c89074010000000000000000000000000000000000000000900463ffffffff1681565b6005546101c8907801000000000000000000000000000000000000000000000000900463ffffffff1681565b61018f610766565b61018f61030f3660046114c3565b6108a6565b61018f6103223660046114ed565b610af4565b61033a610335366004611508565b610bcd565b6040519081526020016101d9565b6004546101c89074010000000000000000000000000000000000000000900463ffffffff1681565b61018f61037e366004611521565b610be5565b60015461026d9073ffffffffffffffffffffffffffffffffffffffff1681565b61018f6103b1366004611431565b610dec565b6101f86103c43660046115d7565b600260209081526000928352604080842090915290825290205460ff1681565b61033a610f31565b60005473ffffffffffffffffffffffffffffffffffffffff16331461043d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104ec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610539576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff163314610624576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610675576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610720336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b610756576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107618383836110e9565b505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146107bc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16330361080d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6108d4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b61090a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546000906109389074010000000000000000000000000000000000000000900463ffffffff1642611668565b60055490915063ffffffff78010000000000000000000000000000000000000000000000008204811691700100000000000000000000000000000000900481169083168214610a2457600061098e828486611367565b90505b8363ffffffff168110156109d757600160068363ffffffff1683600101816109bb576109bb61160a565b06610fa081106109cd576109cd61167c565b0155600101610991565b50600580547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff8616021790555b600084610a3083611393565b610a3a91906116ab565b6005549091506fffffffffffffffffffffffffffffffff16811115610aae576005546040517fe0594838000000000000000000000000000000000000000000000000000000008152600481018390526fffffffffffffffffffffffffffffffff909116602482015260440160405180910390fd5b8460068363ffffffff168663ffffffff1681610acc57610acc61160a565b0663ffffffff16610fa08110610ae457610ae461167c565b0180549091019055505050505050565b610b22336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b610b58576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff83169081179091556040519081527ff4908ebd3d07d72528127c80ce926b5dc3cf23216a6daeffcccf763842c07ded9060200160405180910390a150565b600681610fa08110610bde57600080fd5b0154905081565b610c13336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b610c49576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610c96576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610de457848482818110610cc957610cc961167c565b905060400201803603810190610cdf91906116be565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055610ddd81611740565b9050610caf565b505050505050565b610e1a336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b610e50576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e9d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6005546000908190610f619074010000000000000000000000000000000000000000900463ffffffff1642611668565b60055490915063ffffffff780100000000000000000000000000000000000000000000000082048116917001000000000000000000000000000000009004166000610fab82611393565b90508263ffffffff168463ffffffff161461101d576000610fcd838587611367565b90505b8463ffffffff1681101561101b57600160068463ffffffff168360010181610ffa57610ffa61160a565b06610fa0811061100c5761100c61167c565b01540390910390600101610fd0565b505b949350505050565b60035460009060ff1615611057575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146110e3565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806110d2575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156110df575060016110e3565b5060005b92915050565b8263ffffffff16600003611129576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006111358385611778565b63ffffffff161115611173576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa063ffffffff831611156111b5576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805463ffffffff808516700100000000000000000000000000000000027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff909216919091179091556004805491851674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff909216919091179055611251828461179b565b600580547fffffffff00000000ffffffffffffffff0000000000000000000000000000000063ffffffff939093167401000000000000000000000000000000000000000002929092167fffffffff0000000000000000ffffffff00000000000000000000000000000000909216919091176fffffffffffffffffffffffffffffffff831617905560005b8263ffffffff16811015611309576001600682610fa081106112ff576112ff61167c565b01556001016112db565b506040805163ffffffff8581168252841660208201526fffffffffffffffffffffffffffffffff83168183015290517f9ecb31d34ba64f7242f8e6c17081f9236985a7bc47951f5ded0c975c43a4d8b59181900360600190a1505050565b600083820363ffffffff808216908516106113825783611384565b805b63ffffffff1695945050505050565b6000805b8263ffffffff168110156113c857600681610fa081106113b9576113b961167c565b01549190910190600101611397565b5063ffffffff909116900390565b803580151581146113e657600080fd5b919050565b6000602082840312156113fd57600080fd5b611406826113d6565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146113e657600080fd5b60006020828403121561144357600080fd5b6114068261140d565b803563ffffffff811681146113e657600080fd5b80356fffffffffffffffffffffffffffffffff811681146113e657600080fd5b60008060006060848603121561149557600080fd5b61149e8461144c565b92506114ac6020850161144c565b91506114ba60408501611460565b90509250925092565b600080604083850312156114d657600080fd5b6114df8361140d565b946020939093013593505050565b6000602082840312156114ff57600080fd5b61140682611460565b60006020828403121561151a57600080fd5b5035919050565b60008060006040848603121561153657600080fd5b61153f8461140d565b9250602084013567ffffffffffffffff8082111561155c57600080fd5b818601915086601f83011261157057600080fd5b81358181111561157f57600080fd5b8760208260061b850101111561159457600080fd5b6020830194508093505050509250925092565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146113e657600080fd5b600080604083850312156115ea57600080fd5b6115f38361140d565b9150611601602084016115a7565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826116775761167761160a565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808201808211156110e3576110e3611639565b6000604082840312156116d057600080fd5b6040516040810181811067ffffffffffffffff8211171561171a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052611726836115a7565b8152611734602084016113d6565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361177157611771611639565b5060010190565b600063ffffffff8084168061178f5761178f61160a565b92169190910692915050565b600063ffffffff808416806117b2576117b261160a565b9216919091049291505056fea2646970667358221220629677e63a1621bf1ea31058ad3cac4da1d464b05ac844ec68dbfdc4d95b3ecc64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c80636ae845ec116100d8578063b470aade1161008c578063d9a349c111610066578063d9a349c1146103a3578063daeccc79146103b6578063fc2c0c40146103e457600080fd5b8063b470aade14610348578063bfccf0ec14610370578063c34c08e51461038357600080fd5b806393edc024116100bd57806393edc024146103015780639adaafbf146103145780639b51fb0d1461032757600080fd5b80636ae845ec146102cd5780638112c4af146102f957600080fd5b80631f2114051161012f57806338a631831161011457806338a631831461024d578063421a835f146102925780635eaf665d146102a557600080fd5b80631f21140514610208578063355274ea1461021057600080fd5b806307feef6e1161016057806307feef6e146101a457806315aaea17146101e25780631810fe7f146101eb57600080fd5b8063032ef9011461017c57806307f184f114610191575b600080fd5b61018f61018a3660046113eb565b6103ec565b005b61018f61019f366004611431565b61049b565b6005546101c890700100000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6101c8610fa081565b6003546101f89060ff1681565b60405190151581526020016101d9565b61018f6105d3565b60055461022c906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101d9565b60005461026d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d9565b61018f6102a0366004611480565b6106f2565b6005546101c89074010000000000000000000000000000000000000000900463ffffffff1681565b6005546101c8907801000000000000000000000000000000000000000000000000900463ffffffff1681565b61018f610766565b61018f61030f3660046114c3565b6108a6565b61018f6103223660046114ed565b610af4565b61033a610335366004611508565b610bcd565b6040519081526020016101d9565b6004546101c89074010000000000000000000000000000000000000000900463ffffffff1681565b61018f61037e366004611521565b610be5565b60015461026d9073ffffffffffffffffffffffffffffffffffffffff1681565b61018f6103b1366004611431565b610dec565b6101f86103c43660046115d7565b600260209081526000928352604080842090915290825290205460ff1681565b61033a610f31565b60005473ffffffffffffffffffffffffffffffffffffffff16331461043d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104ec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610539576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff163314610624576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610675576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610720336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b610756576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107618383836110e9565b505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146107bc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16330361080d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6108d4336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b61090a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546000906109389074010000000000000000000000000000000000000000900463ffffffff1642611668565b60055490915063ffffffff78010000000000000000000000000000000000000000000000008204811691700100000000000000000000000000000000900481169083168214610a2457600061098e828486611367565b90505b8363ffffffff168110156109d757600160068363ffffffff1683600101816109bb576109bb61160a565b06610fa081106109cd576109cd61167c565b0155600101610991565b50600580547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff8616021790555b600084610a3083611393565b610a3a91906116ab565b6005549091506fffffffffffffffffffffffffffffffff16811115610aae576005546040517fe0594838000000000000000000000000000000000000000000000000000000008152600481018390526fffffffffffffffffffffffffffffffff909116602482015260440160405180910390fd5b8460068363ffffffff168663ffffffff1681610acc57610acc61160a565b0663ffffffff16610fa08110610ae457610ae461167c565b0180549091019055505050505050565b610b22336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b610b58576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff83169081179091556040519081527ff4908ebd3d07d72528127c80ce926b5dc3cf23216a6daeffcccf763842c07ded9060200160405180910390a150565b600681610fa08110610bde57600080fd5b0154905081565b610c13336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b610c49576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610c96576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610de457848482818110610cc957610cc961167c565b905060400201803603810190610cdf91906116be565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055610ddd81611740565b9050610caf565b505050505050565b610e1a336000357fffffffff0000000000000000000000000000000000000000000000000000000016611025565b610e50576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e9d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6005546000908190610f619074010000000000000000000000000000000000000000900463ffffffff1642611668565b60055490915063ffffffff780100000000000000000000000000000000000000000000000082048116917001000000000000000000000000000000009004166000610fab82611393565b90508263ffffffff168463ffffffff161461101d576000610fcd838587611367565b90505b8463ffffffff1681101561101b57600160068463ffffffff168360010181610ffa57610ffa61160a565b06610fa0811061100c5761100c61167c565b01540390910390600101610fd0565b505b949350505050565b60035460009060ff1615611057575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146110e3565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806110d2575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156110df575060016110e3565b5060005b92915050565b8263ffffffff16600003611129576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006111358385611778565b63ffffffff161115611173576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa063ffffffff831611156111b5576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805463ffffffff808516700100000000000000000000000000000000027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff909216919091179091556004805491851674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff909216919091179055611251828461179b565b600580547fffffffff00000000ffffffffffffffff0000000000000000000000000000000063ffffffff939093167401000000000000000000000000000000000000000002929092167fffffffff0000000000000000ffffffff00000000000000000000000000000000909216919091176fffffffffffffffffffffffffffffffff831617905560005b8263ffffffff16811015611309576001600682610fa081106112ff576112ff61167c565b01556001016112db565b506040805163ffffffff8581168252841660208201526fffffffffffffffffffffffffffffffff83168183015290517f9ecb31d34ba64f7242f8e6c17081f9236985a7bc47951f5ded0c975c43a4d8b59181900360600190a1505050565b600083820363ffffffff808216908516106113825783611384565b805b63ffffffff1695945050505050565b6000805b8263ffffffff168110156113c857600681610fa081106113b9576113b961167c565b01549190910190600101611397565b5063ffffffff909116900390565b803580151581146113e657600080fd5b919050565b6000602082840312156113fd57600080fd5b611406826113d6565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146113e657600080fd5b60006020828403121561144357600080fd5b6114068261140d565b803563ffffffff811681146113e657600080fd5b80356fffffffffffffffffffffffffffffffff811681146113e657600080fd5b60008060006060848603121561149557600080fd5b61149e8461144c565b92506114ac6020850161144c565b91506114ba60408501611460565b90509250925092565b600080604083850312156114d657600080fd5b6114df8361140d565b946020939093013593505050565b6000602082840312156114ff57600080fd5b61140682611460565b60006020828403121561151a57600080fd5b5035919050565b60008060006040848603121561153657600080fd5b61153f8461140d565b9250602084013567ffffffffffffffff8082111561155c57600080fd5b818601915086601f83011261157057600080fd5b81358181111561157f57600080fd5b8760208260061b850101111561159457600080fd5b6020830194508093505050509250925092565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146113e657600080fd5b600080604083850312156115ea57600080fd5b6115f38361140d565b9150611601602084016115a7565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826116775761167761160a565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808201808211156110e3576110e3611639565b6000604082840312156116d057600080fd5b6040516040810181811067ffffffffffffffff8211171561171a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052611726836115a7565b8152611734602084016113d6565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361177157611771611639565b5060010190565b600063ffffffff8084168061178f5761178f61160a565b92169190910692915050565b600063ffffffff808416806117b2576117b261160a565b9216919091049291505056fea2646970667358221220629677e63a1621bf1ea31058ad3cac4da1d464b05ac844ec68dbfdc4d95b3ecc64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol/TempleCircuitBreakerProxy.json b/apps/dapp/abi/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol/TempleCircuitBreakerProxy.json new file mode 100644 index 000000000..faa8b6293 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol/TempleCircuitBreakerProxy.json @@ -0,0 +1,484 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleCircuitBreakerProxy", + "sourceName": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "circuitBreaker", + "type": "address" + } + ], + "name": "CircuitBreakerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "identifierString", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + } + ], + "name": "IdentifierForCallerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "callerToIdentifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "circuitBreakers", + "outputs": [ + { + "internalType": "contract ITempleCircuitBreaker", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "identifiers", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "preCheck", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "identifier", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "circuitBreaker", + "type": "address" + } + ], + "name": "setCircuitBreaker", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "string", + "name": "identifierString", + "type": "string" + } + ], + "name": "setIdentifierForCaller", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620016393803806200163983398101604081905262000034916200010b565b81816001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617905550620001439050565b80516001600160a01b03811681146200010657600080fd5b919050565b600080604083850312156200011f57600080fd5b6200012a83620000ee565b91506200013a60208401620000ee565b90509250929050565b6114e680620001536000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638112c4af11610097578063c34c08e511610066578063c34c08e514610261578063d9a349c114610281578063daeccc7914610294578063e5a83c1d146102c257600080fd5b80638112c4af1461020357806389fa081e1461020b578063913f6ad514610239578063bfccf0ec1461024e57600080fd5b80631f211405116100d35780631f211405146101b557806320cf3776146101bd57806338a63183146101d057806357f597b7146101f057600080fd5b8063032ef9011461010557806307f184f11461011a57806317e062e41461012d5780631810fe7f14610198575b600080fd5b610118610113366004610ff0565b6102d5565b005b61011861012836600461102f565b610384565b61016e61013b36600461104a565b600660209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546101a59060ff1681565b604051901515815260200161018f565b6101186104bc565b6101186101cb366004611076565b6105db565b60005461016e9073ffffffffffffffffffffffffffffffffffffffff1681565b6101186101fe3660046110b2565b610764565b61011861081a565b61022b61021936600461102f565b60056020526000908152604090205481565b60405190815260200161018f565b61024161095a565b60405161018f91906110ee565b61011861025c366004611132565b61096b565b60015461016e9073ffffffffffffffffffffffffffffffffffffffff1681565b61011861028f36600461102f565b610b72565b6101a56102a23660046111e8565b600260209081526000928352604080842090915290825290205460ff1681565b6101186102d0366004611290565b610cb7565b60005473ffffffffffffffffffffffffffffffffffffffff163314610326576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610422576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff16331461050d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff16330361055e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610609336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e38565b61063f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064a600784610efc565b610680576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166106cd576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8681168086529184529382902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948616948517905590519283529185917f76f9665f4e916a5157773626d57ac454ed3e752fd2c84764a62e5eab353dd77f910160405180910390a3505050565b336000908152600560209081526040808320548084526006835281842073ffffffffffffffffffffffffffffffffffffffff88811686529352928190205490517f93edc0240000000000000000000000000000000000000000000000000000000081528583166004820152602481018590529116906393edc02490604401600060405180830381600087803b1580156107fc57600080fd5b505af1158015610810573d6000803e3d6000fd5b5050505050505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610870576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036108c1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b60606109666007610f17565b905090565b610999336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e38565b6109cf576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610a1c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610b6a57848482818110610a4f57610a4f611354565b905060400201803603810190610a659190611383565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055610b63816113de565b9050610a35565b505050505050565b610ba0336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e38565b610bd6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c23576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610ce5336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e38565b610d1b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610d68576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600003610da3576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208083019190912073ffffffffffffffffffffffffffffffffffffffff8416600090815260059092526040909120819055610de2600782610f24565b508273ffffffffffffffffffffffffffffffffffffffff167f2bb3a56b3d3e7dcc35104bfde069569b51da8bbd1c494b1a2ab9f021220fefb68383604051610e2b92919061143d565b60405180910390a2505050565b60035460009060ff1615610e6a575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610ef6565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480610ee5575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b15610ef257506001610ef6565b5060005b92915050565b600081815260018301602052604081205415155b9392505050565b60606000610f1083610f30565b6000610f108383610f8c565b606081600001805480602002602001604051908101604052809291908181526020018280548015610f8057602002820191906000526020600020905b815481526020019060010190808311610f6c575b50505050509050919050565b6000818152600183016020526040812054610fd357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ef6565b506000610ef6565b80358015158114610feb57600080fd5b919050565b60006020828403121561100257600080fd5b610f1082610fdb565b803573ffffffffffffffffffffffffffffffffffffffff81168114610feb57600080fd5b60006020828403121561104157600080fd5b610f108261100b565b6000806040838503121561105d57600080fd5b8235915061106d6020840161100b565b90509250929050565b60008060006060848603121561108b57600080fd5b8335925061109b6020850161100b565b91506110a96040850161100b565b90509250925092565b6000806000606084860312156110c757600080fd5b6110d08461100b565b92506110de6020850161100b565b9150604084013590509250925092565b6020808252825182820181905260009190848201906040850190845b818110156111265783518352928401929184019160010161110a565b50909695505050505050565b60008060006040848603121561114757600080fd5b6111508461100b565b9250602084013567ffffffffffffffff8082111561116d57600080fd5b818601915086601f83011261118157600080fd5b81358181111561119057600080fd5b8760208260061b85010111156111a557600080fd5b6020830194508093505050509250925092565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610feb57600080fd5b600080604083850312156111fb57600080fd5b6112048361100b565b915061106d602084016111b8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561128857611288611212565b604052919050565b600080604083850312156112a357600080fd5b6112ac8361100b565b915060208084013567ffffffffffffffff808211156112ca57600080fd5b818601915086601f8301126112de57600080fd5b8135818111156112f0576112f0611212565b611320847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611241565b9150808252878482850101111561133657600080fd5b80848401858401376000848284010152508093505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561139557600080fd5b6040516040810181811067ffffffffffffffff821117156113b8576113b8611212565b6040526113c4836111b8565b81526113d260208401610fdb565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611436577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b604081526000835180604084015260005b8181101561146b576020818701810151606086840101520161144e565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116840101915050826020830152939250505056fea2646970667358221220d24bd3b0672f436e2d8a03bae19ce554581b61b21c6ab2cebab2c3b00b4410d264736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638112c4af11610097578063c34c08e511610066578063c34c08e514610261578063d9a349c114610281578063daeccc7914610294578063e5a83c1d146102c257600080fd5b80638112c4af1461020357806389fa081e1461020b578063913f6ad514610239578063bfccf0ec1461024e57600080fd5b80631f211405116100d35780631f211405146101b557806320cf3776146101bd57806338a63183146101d057806357f597b7146101f057600080fd5b8063032ef9011461010557806307f184f11461011a57806317e062e41461012d5780631810fe7f14610198575b600080fd5b610118610113366004610ff0565b6102d5565b005b61011861012836600461102f565b610384565b61016e61013b36600461104a565b600660209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546101a59060ff1681565b604051901515815260200161018f565b6101186104bc565b6101186101cb366004611076565b6105db565b60005461016e9073ffffffffffffffffffffffffffffffffffffffff1681565b6101186101fe3660046110b2565b610764565b61011861081a565b61022b61021936600461102f565b60056020526000908152604090205481565b60405190815260200161018f565b61024161095a565b60405161018f91906110ee565b61011861025c366004611132565b61096b565b60015461016e9073ffffffffffffffffffffffffffffffffffffffff1681565b61011861028f36600461102f565b610b72565b6101a56102a23660046111e8565b600260209081526000928352604080842090915290825290205460ff1681565b6101186102d0366004611290565b610cb7565b60005473ffffffffffffffffffffffffffffffffffffffff163314610326576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610422576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff16331461050d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff16330361055e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610609336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e38565b61063f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064a600784610efc565b610680576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166106cd576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8681168086529184529382902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948616948517905590519283529185917f76f9665f4e916a5157773626d57ac454ed3e752fd2c84764a62e5eab353dd77f910160405180910390a3505050565b336000908152600560209081526040808320548084526006835281842073ffffffffffffffffffffffffffffffffffffffff88811686529352928190205490517f93edc0240000000000000000000000000000000000000000000000000000000081528583166004820152602481018590529116906393edc02490604401600060405180830381600087803b1580156107fc57600080fd5b505af1158015610810573d6000803e3d6000fd5b5050505050505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610870576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036108c1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b60606109666007610f17565b905090565b610999336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e38565b6109cf576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610a1c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610b6a57848482818110610a4f57610a4f611354565b905060400201803603810190610a659190611383565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055610b63816113de565b9050610a35565b505050505050565b610ba0336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e38565b610bd6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c23576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610ce5336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e38565b610d1b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610d68576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600003610da3576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208083019190912073ffffffffffffffffffffffffffffffffffffffff8416600090815260059092526040909120819055610de2600782610f24565b508273ffffffffffffffffffffffffffffffffffffffff167f2bb3a56b3d3e7dcc35104bfde069569b51da8bbd1c494b1a2ab9f021220fefb68383604051610e2b92919061143d565b60405180910390a2505050565b60035460009060ff1615610e6a575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610ef6565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480610ee5575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b15610ef257506001610ef6565b5060005b92915050565b600081815260018301602052604081205415155b9392505050565b60606000610f1083610f30565b6000610f108383610f8c565b606081600001805480602002602001604051908101604052809291908181526020018280548015610f8057602002820191906000526020600020905b815481526020019060010190808311610f6c575b50505050509050919050565b6000818152600183016020526040812054610fd357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ef6565b506000610ef6565b80358015158114610feb57600080fd5b919050565b60006020828403121561100257600080fd5b610f1082610fdb565b803573ffffffffffffffffffffffffffffffffffffffff81168114610feb57600080fd5b60006020828403121561104157600080fd5b610f108261100b565b6000806040838503121561105d57600080fd5b8235915061106d6020840161100b565b90509250929050565b60008060006060848603121561108b57600080fd5b8335925061109b6020850161100b565b91506110a96040850161100b565b90509250925092565b6000806000606084860312156110c757600080fd5b6110d08461100b565b92506110de6020850161100b565b9150604084013590509250925092565b6020808252825182820181905260009190848201906040850190845b818110156111265783518352928401929184019160010161110a565b50909695505050505050565b60008060006040848603121561114757600080fd5b6111508461100b565b9250602084013567ffffffffffffffff8082111561116d57600080fd5b818601915086601f83011261118157600080fd5b81358181111561119057600080fd5b8760208260061b85010111156111a557600080fd5b6020830194508093505050509250925092565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610feb57600080fd5b600080604083850312156111fb57600080fd5b6112048361100b565b915061106d602084016111b8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561128857611288611212565b604052919050565b600080604083850312156112a357600080fd5b6112ac8361100b565b915060208084013567ffffffffffffffff808211156112ca57600080fd5b818601915086601f8301126112de57600080fd5b8135818111156112f0576112f0611212565b611320847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611241565b9150808252878482850101111561133657600080fd5b80848401858401376000848284010152508093505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561139557600080fd5b6040516040810181811067ffffffffffffffff821117156113b8576113b8611212565b6040526113c4836111b8565b81526113d260208401610fdb565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611436577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b604081526000835180604084015260005b8181101561146b576020818701810151606086840101520161144e565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116840101915050826020830152939250505056fea2646970667358221220d24bd3b0672f436e2d8a03bae19ce554581b61b21c6ab2cebab2c3b00b4410d264736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/interestRate/BaseInterestRateModel.sol/BaseInterestRateModel.json b/apps/dapp/abi/contracts/v2/interestRate/BaseInterestRateModel.sol/BaseInterestRateModel.json new file mode 100644 index 000000000..7148ffc5d --- /dev/null +++ b/apps/dapp/abi/contracts/v2/interestRate/BaseInterestRateModel.sol/BaseInterestRateModel.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BaseInterestRateModel", + "sourceName": "contracts/v2/interestRate/BaseInterestRateModel.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "utilizationRatio", + "type": "uint256" + } + ], + "name": "calculateInterestRate", + "outputs": [ + { + "internalType": "uint96", + "name": "interestRate", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/interestRate/CompoundedInterest.sol/CompoundedInterest.json b/apps/dapp/abi/contracts/v2/interestRate/CompoundedInterest.sol/CompoundedInterest.json new file mode 100644 index 000000000..5a1bac0f1 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/interestRate/CompoundedInterest.sol/CompoundedInterest.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CompoundedInterest", + "sourceName": "contracts/v2/interestRate/CompoundedInterest.sol", + "abi": [ + { + "inputs": [], + "name": "ONE_YEAR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608a610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806316d3bfbb146038575b600080fd5b60426301e1338081565b60405190815260200160405180910390f3fea264697066735822122020e04714de28d360c5ab299342237fa163f17981e212a64592d3f034150e31ee64736f6c63430008130033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806316d3bfbb146038575b600080fd5b60426301e1338081565b60405190815260200160405180910390f3fea264697066735822122020e04714de28d360c5ab299342237fa163f17981e212a64592d3f034150e31ee64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol/LinearWithKinkInterestRateModel.json b/apps/dapp/abi/contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol/LinearWithKinkInterestRateModel.json new file mode 100644 index 000000000..37f384903 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol/LinearWithKinkInterestRateModel.json @@ -0,0 +1,440 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LinearWithKinkInterestRateModel", + "sourceName": "contracts/v2/interestRate/LinearWithKinkInterestRateModel.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "uint80", + "name": "_baseInterestRate", + "type": "uint80" + }, + { + "internalType": "uint80", + "name": "_maxInterestRate", + "type": "uint80" + }, + { + "internalType": "uint256", + "name": "_kinkUtilizationRatio", + "type": "uint256" + }, + { + "internalType": "uint80", + "name": "_kinkInterestRate", + "type": "uint80" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint80", + "name": "_baseInterestRate", + "type": "uint80" + }, + { + "indexed": false, + "internalType": "uint80", + "name": "_maxInterestRate", + "type": "uint80" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_kinkUtilizationRatio", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint80", + "name": "_kinkInterestRate", + "type": "uint80" + } + ], + "name": "InterestRateParamsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "utilizationRatio", + "type": "uint256" + } + ], + "name": "calculateInterestRate", + "outputs": [ + { + "internalType": "uint96", + "name": "interestRate", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rateParams", + "outputs": [ + { + "internalType": "uint80", + "name": "baseInterestRate", + "type": "uint80" + }, + { + "internalType": "uint80", + "name": "maxInterestRate", + "type": "uint80" + }, + { + "internalType": "uint80", + "name": "kinkInterestRate", + "type": "uint80" + }, + { + "internalType": "uint256", + "name": "kinkUtilizationRatio", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint80", + "name": "_baseInterestRate", + "type": "uint80" + }, + { + "internalType": "uint80", + "name": "_maxInterestRate", + "type": "uint80" + }, + { + "internalType": "uint256", + "name": "_kinkUtilizationRatio", + "type": "uint256" + }, + { + "internalType": "uint80", + "name": "_kinkInterestRate", + "type": "uint80" + } + ], + "name": "setRateParams", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620016743803806200167483398101604081905262000034916200029e565b85856001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055620000f384848484620000ff565b50505050505062000316565b816000036200012157604051633494a40d60e21b815260040160405180910390fd5b670de0b6b3a764000082106200014a57604051633494a40d60e21b815260040160405180910390fd5b806001600160501b0316846001600160501b031611156200017e57604051633494a40d60e21b815260040160405180910390fd5b826001600160501b0316816001600160501b03161115620001b257604051633494a40d60e21b815260040160405180910390fd5b60408051608080820183526001600160501b0387811680845287821660208086018290529287168587018190526060958601899052600580546001600160a01b03191684176a0100000000000000000000840217600160a01b600160f01b031916600160a01b83021790556006899055865192835292820152938401869052918301919091527fa2dbecdd60c4ca54d7188f698dee8224753057c4e6fb4bf957301ed9d982082c910160405180910390a150505050565b80516001600160a01b03811681146200028157600080fd5b919050565b80516001600160501b03811681146200028157600080fd5b60008060008060008060c08789031215620002b857600080fd5b620002c38762000269565b9550620002d36020880162000269565b9450620002e36040880162000286565b9350620002f36060880162000286565b9250608087015191506200030a60a0880162000286565b90509295509295509295565b61134e80620003266000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638112c4af1161008c578063c34c08e511610066578063c34c08e5146101d9578063d9a349c1146101f9578063daeccc791461020c578063f80b0a2f1461023a57600080fd5b80638112c4af1461018e57806390d3b37914610196578063bfccf0ec146101c657600080fd5b80631810fe7f116100bd5780631810fe7f1461011f5780631f2114051461014157806338a631831461014957600080fd5b8063032ef901146100e457806307f184f1146100f95780630ccbd83e1461010c575b600080fd5b6100f76100f2366004610f9b565b6102bb565b005b6100f7610107366004610fda565b61036a565b6100f761011a36600461100f565b6104a2565b60035461012c9060ff1681565b60405190151581526020015b60405180910390f35b6100f7610518565b6000546101699073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610138565b6100f7610637565b6101a96101a436600461105c565b610777565b6040516bffffffffffffffffffffffff9091168152602001610138565b6100f76101d4366004611075565b6107ce565b6001546101699073ffffffffffffffffffffffffffffffffffffffff1681565b6100f7610207366004610fda565b6109d5565b61012c61021a36600461112b565b600260209081526000928352604080842090915290825290205460ff1681565b6005546006546102839169ffffffffffffffffffff808216926a010000000000000000000083048216927401000000000000000000000000000000000000000090049091169084565b604051610138949392919069ffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b60005473ffffffffffffffffffffffffffffffffffffffff16331461030c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103bb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610408576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6104d0336000357fffffffff0000000000000000000000000000000000000000000000000000000016610b1a565b610506576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61051284848484610bde565b50505050565b60045473ffffffffffffffffffffffffffffffffffffffff163314610569576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036105ba576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461068d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036106de576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6000670de0b6b3a764000082111561079557670de0b6b3a764000091505b61079e82610df5565b9050674563918244f400006bffffffffffffffffffffffff821611156107c95750674563918244f400005b919050565b6107fc336000357fffffffff0000000000000000000000000000000000000000000000000000000016610b1a565b610832576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156109cd578484828181106108b2576108b261115e565b9050604002018036038101906108c8919061118d565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556109c68161123e565b9050610898565b505050505050565b610a03336000357fffffffff0000000000000000000000000000000000000000000000000000000016610b1a565b610a39576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a86576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035460009060ff1615610b4c575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610bd8565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480610bc7575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b15610bd457506001610bd8565b5060005b92915050565b81600003610c18576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a76400008210610c59576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8069ffffffffffffffffffff168469ffffffffffffffffffff161115610cab576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8269ffffffffffffffffffff168169ffffffffffffffffffff161115610cfd576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080808201835269ffffffffffffffffffff87811680845287821660208086018290529287168587018190526060958601899052600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001684176a01000000000000000000008402177fffff00000000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000083021790556006899055865192835292820152938401869052918301919091527fa2dbecdd60c4ca54d7188f698dee8224753057c4e6fb4bf957301ed9d982082c910160405180910390a150505050565b6040805160808101825260055469ffffffffffffffffffff80821683526a010000000000000000000082048116602084015274010000000000000000000000000000000000000000909104169181019190915260065460608201819052600091908290841115610f075760008260600151670de0b6b3a7640000610e799190611276565b83604001518460200151610e8d9190611289565b610eab9069ffffffffffffffffffff16670de0b6b3a76400006112b3565b610eb591906112ca565b9050826040015169ffffffffffffffffffff16670de0b6b3a7640000846060015187610ee19190611276565b610eeb90846112b3565b610ef591906112ca565b610eff9190611305565b915050610f84565b60608201518251604084015160009291610f2091611289565b610f3e9069ffffffffffffffffffff16670de0b6b3a76400006112b3565b610f4891906112ca565b835190915069ffffffffffffffffffff16670de0b6b3a7640000610f6c83886112b3565b610f7691906112ca565b610f809190611305565b9150505b9392505050565b803580151581146107c957600080fd5b600060208284031215610fad57600080fd5b610f8482610f8b565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c957600080fd5b600060208284031215610fec57600080fd5b610f8482610fb6565b803569ffffffffffffffffffff811681146107c957600080fd5b6000806000806080858703121561102557600080fd5b61102e85610ff5565b935061103c60208601610ff5565b92506040850135915061105160608601610ff5565b905092959194509250565b60006020828403121561106e57600080fd5b5035919050565b60008060006040848603121561108a57600080fd5b61109384610fb6565b9250602084013567ffffffffffffffff808211156110b057600080fd5b818601915086601f8301126110c457600080fd5b8135818111156110d357600080fd5b8760208260061b85010111156110e857600080fd5b6020830194508093505050509250925092565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146107c957600080fd5b6000806040838503121561113e57600080fd5b61114783610fb6565b9150611155602084016110fb565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561119f57600080fd5b6040516040810181811067ffffffffffffffff821117156111e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526111f5836110fb565b815261120360208401610f8b565b60208201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361126f5761126f61120f565b5060010190565b81810381811115610bd857610bd861120f565b69ffffffffffffffffffff8281168282160390808211156112ac576112ac61120f565b5092915050565b8082028115828204841417610bd857610bd861120f565b600082611300577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610bd857610bd861120f56fea2646970667358221220999d3c1a0315d71e9bc40586ef5be773238c8d65a319a973babdf014f064366e64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80638112c4af1161008c578063c34c08e511610066578063c34c08e5146101d9578063d9a349c1146101f9578063daeccc791461020c578063f80b0a2f1461023a57600080fd5b80638112c4af1461018e57806390d3b37914610196578063bfccf0ec146101c657600080fd5b80631810fe7f116100bd5780631810fe7f1461011f5780631f2114051461014157806338a631831461014957600080fd5b8063032ef901146100e457806307f184f1146100f95780630ccbd83e1461010c575b600080fd5b6100f76100f2366004610f9b565b6102bb565b005b6100f7610107366004610fda565b61036a565b6100f761011a36600461100f565b6104a2565b60035461012c9060ff1681565b60405190151581526020015b60405180910390f35b6100f7610518565b6000546101699073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610138565b6100f7610637565b6101a96101a436600461105c565b610777565b6040516bffffffffffffffffffffffff9091168152602001610138565b6100f76101d4366004611075565b6107ce565b6001546101699073ffffffffffffffffffffffffffffffffffffffff1681565b6100f7610207366004610fda565b6109d5565b61012c61021a36600461112b565b600260209081526000928352604080842090915290825290205460ff1681565b6005546006546102839169ffffffffffffffffffff808216926a010000000000000000000083048216927401000000000000000000000000000000000000000090049091169084565b604051610138949392919069ffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b60005473ffffffffffffffffffffffffffffffffffffffff16331461030c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103bb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610408576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6104d0336000357fffffffff0000000000000000000000000000000000000000000000000000000016610b1a565b610506576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61051284848484610bde565b50505050565b60045473ffffffffffffffffffffffffffffffffffffffff163314610569576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036105ba576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461068d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036106de576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6000670de0b6b3a764000082111561079557670de0b6b3a764000091505b61079e82610df5565b9050674563918244f400006bffffffffffffffffffffffff821611156107c95750674563918244f400005b919050565b6107fc336000357fffffffff0000000000000000000000000000000000000000000000000000000016610b1a565b610832576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156109cd578484828181106108b2576108b261115e565b9050604002018036038101906108c8919061118d565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556109c68161123e565b9050610898565b505050505050565b610a03336000357fffffffff0000000000000000000000000000000000000000000000000000000016610b1a565b610a39576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a86576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035460009060ff1615610b4c575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610bd8565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480610bc7575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b15610bd457506001610bd8565b5060005b92915050565b81600003610c18576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a76400008210610c59576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8069ffffffffffffffffffff168469ffffffffffffffffffff161115610cab576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8269ffffffffffffffffffff168169ffffffffffffffffffff161115610cfd576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080808201835269ffffffffffffffffffff87811680845287821660208086018290529287168587018190526060958601899052600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001684176a01000000000000000000008402177fffff00000000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000083021790556006899055865192835292820152938401869052918301919091527fa2dbecdd60c4ca54d7188f698dee8224753057c4e6fb4bf957301ed9d982082c910160405180910390a150505050565b6040805160808101825260055469ffffffffffffffffffff80821683526a010000000000000000000082048116602084015274010000000000000000000000000000000000000000909104169181019190915260065460608201819052600091908290841115610f075760008260600151670de0b6b3a7640000610e799190611276565b83604001518460200151610e8d9190611289565b610eab9069ffffffffffffffffffff16670de0b6b3a76400006112b3565b610eb591906112ca565b9050826040015169ffffffffffffffffffff16670de0b6b3a7640000846060015187610ee19190611276565b610eeb90846112b3565b610ef591906112ca565b610eff9190611305565b915050610f84565b60608201518251604084015160009291610f2091611289565b610f3e9069ffffffffffffffffffff16670de0b6b3a76400006112b3565b610f4891906112ca565b835190915069ffffffffffffffffffff16670de0b6b3a7640000610f6c83886112b3565b610f7691906112ca565b610f809190611305565b9150505b9392505050565b803580151581146107c957600080fd5b600060208284031215610fad57600080fd5b610f8482610f8b565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c957600080fd5b600060208284031215610fec57600080fd5b610f8482610fb6565b803569ffffffffffffffffffff811681146107c957600080fd5b6000806000806080858703121561102557600080fd5b61102e85610ff5565b935061103c60208601610ff5565b92506040850135915061105160608601610ff5565b905092959194509250565b60006020828403121561106e57600080fd5b5035919050565b60008060006040848603121561108a57600080fd5b61109384610fb6565b9250602084013567ffffffffffffffff808211156110b057600080fd5b818601915086601f8301126110c457600080fd5b8135818111156110d357600080fd5b8760208260061b85010111156110e857600080fd5b6020830194508093505050509250925092565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146107c957600080fd5b6000806040838503121561113e57600080fd5b61114783610fb6565b9150611155602084016110fb565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403121561119f57600080fd5b6040516040810181811067ffffffffffffffff821117156111e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526111f5836110fb565b815261120360208401610f8b565b60208201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361126f5761126f61120f565b5060010190565b81810381811115610bd857610bd861120f565b69ffffffffffffffffffff8281168282160390808211156112ac576112ac61120f565b5092915050565b8082028115828204841417610bd857610bd861120f565b600082611300577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610bd857610bd861120f56fea2646970667358221220999d3c1a0315d71e9bc40586ef5be773238c8d65a319a973babdf014f064366e64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/safeGuards/SafeForked.sol/SafeForked.json b/apps/dapp/abi/contracts/v2/safeGuards/SafeForked.sol/SafeForked.json new file mode 100644 index 000000000..c8263f10c --- /dev/null +++ b/apps/dapp/abi/contracts/v2/safeGuards/SafeForked.sol/SafeForked.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeForked", + "sourceName": "contracts/v2/safeGuards/SafeForked.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204358107b0822df35612b090a3c09e04436689a9abb6f672e8479af6d3ddb250b64736f6c63430008130033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204358107b0822df35612b090a3c09e04436689a9abb6f672e8479af6d3ddb250b64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/safeGuards/ThresholdSafeGuard.sol/ThresholdSafeGuard.json b/apps/dapp/abi/contracts/v2/safeGuards/ThresholdSafeGuard.sol/ThresholdSafeGuard.json new file mode 100644 index 000000000..124826ee8 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/safeGuards/ThresholdSafeGuard.sol/ThresholdSafeGuard.json @@ -0,0 +1,793 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ThresholdSafeGuard", + "sourceName": "contracts/v2/safeGuards/ThresholdSafeGuard.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_defaultSignaturesThreshold", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "found", + "type": "uint256" + } + ], + "name": "DynamicSignatureThresholdNotMet", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidExecutor", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "DefaultSignaturesThresholdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "DisableGuardChecksSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "EthTransferThresholdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "functionSignature", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "FunctionThresholdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "executor", + "type": "address" + } + ], + "name": "SafeTxExecutorAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "executor", + "type": "address" + } + ], + "name": "SafeTxExecutorRemoved", + "type": "event" + }, + { + "stateMutability": "nonpayable", + "type": "fallback" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addSafeTxExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "name": "checkAfterExecution", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "safeTxGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "gasToken", + "type": "address" + }, + { + "internalType": "address payable", + "name": "refundReceiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "signatures", + "type": "bytes" + }, + { + "internalType": "address", + "name": "safeTxExecutor", + "type": "address" + } + ], + "name": "checkTransaction", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "defaultSignaturesThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "disableGuardChecks", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "ethTransferThresholds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "functionThresholds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + } + ], + "name": "getEthTransferThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "fnSignature", + "type": "bytes4" + } + ], + "name": "getThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeSafeTxExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "safeTxExecutors", + "outputs": [ + { + "internalType": "address[]", + "name": "executors", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "setDefaultSignaturesThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setDisableGuardChecks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "setEthTransferThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSignature", + "type": "bytes4" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "setFunctionThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddr", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "functionSignatures", + "type": "bytes4[]" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + } + ], + "name": "setFunctionThresholdBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620031a5380380620031a583398101604081905262000034916200010e565b82826001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055600555506200014f9050565b80516001600160a01b03811681146200010957600080fd5b919050565b6000806000606084860312156200012457600080fd5b6200012f84620000f1565b92506200013f60208501620000f1565b9150604084015190509250925092565b613046806200015f6000396000f3fe608060405234801561001057600080fd5b50600436106101af5760003560e01c806398508847116100ed578063d5273fdf11610091578063dcfaf45c1161006e578063dcfaf45c146103f6578063f039cc9b14610409578063fdb96f9a1461041c578063ffa1ad741461044157005b8063d5273fdf146103a2578063d9a349c1146103b5578063daeccc79146103c857005b8063ab9baadc116100ca578063ab9baadc14610349578063bfccf0ec1461035c578063c1a49d671461036f578063c34c08e51461038257005b8063985088471461030e5780639feee43714610321578063a7229fd91461033657005b806328c3734711610154578063562b2bb411610131578063562b2bb4146102ce57806375f0bb52146102e15780638112c4af146102f457806393271368146102fc57005b806328c373471461026057806338a631831461026957806345e3e546146102ae57005b8063112488321161018d57806311248832146101ea5780631810fe7f146102285780631f211405146102455780632516ec221461024d57005b8063032ef901146101b157806307f184f1146101c457806308f3e723146101d7575b005b6101af6101bf366004612682565b61048a565b6101af6101d23660046126d1565b610539565b6101af6101e53660046126ee565b610671565b6102156101f8366004612735565b600660209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6003546102359060ff1681565b604051901515815260200161021f565b6101af61070d565b61021561025b366004612735565b61082c565b61021560055481565b6000546102899073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021f565b6102156102bc3660046126d1565b60076020526000908152604090205481565b6101af6102dc3660046126d1565b610898565b6101af6102ef366004612897565b6109ce565b6101af610cd2565b6101af61030a36600461297c565b5050565b6101af61031c366004612682565b610e12565b610329610ef5565b60405161021f91906129a1565b6101af6103443660046129fb565b610f06565b6102156103573660046126d1565b610ff7565b6101af61036a366004612a3c565b611033565b6101af61037d366004612ac4565b61123a565b6001546102899073ffffffffffffffffffffffffffffffffffffffff1681565b6101af6103b0366004612af0565b611364565b6101af6103c33660046126d1565b611514565b6102356103d6366004612735565b600260209081526000928352604080842090915290825290205460ff1681565b6101af6104043660046126d1565b611659565b6101af610417366004612bbf565b611756565b6004546102359074010000000000000000000000000000000000000000900460ff1681565b61047d6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161021f9190612c5d565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104db576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61069f336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6106d5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fe238bd7a948e28ab306e420d641e9f958faf72ad64a984fb2310e4a54ad0564a9060200160405180910390a1600555565b60045473ffffffffffffffffffffffffffffffffffffffff16331461075e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036107af576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b73ffffffffffffffffffffffffffffffffffffffff821660009081526006602090815260408083207fffffffff00000000000000000000000000000000000000000000000000000000851684529091528120548061088c5760055461088e565b805b9150505b92915050565b6108c6336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6108fc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610949576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbd36f6a78bd7079b6982e2e9eb963bd26f6d2caad4bf9f9383d84f6556c2158d90600090a2610995600882611990565b6109cb576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60045474010000000000000000000000000000000000000000900460ff16610cc557336109fc6008836119b2565b80610a9257506040517f2f54bf6e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152821690632f54bf6e90602401602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190612c70565b610ac8576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3a9190612c8d565b905080600103610b4c57505050610cc5565b8b5115610b6557610b608e61025b8e612ca6565b610b6e565b610b6e8e610ff7565b9150818110610b7f57505050610cc5565b5060008273ffffffffffffffffffffffffffffffffffffffff1663e86637db8f8f8f8f8f8f8f8f8f60018e73ffffffffffffffffffffffffffffffffffffffff1663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c189190612c8d565b610c229190612d25565b6040518b63ffffffff1660e01b8152600401610c479a99989796959493929190612d38565b600060405180830381865afa158015610c64573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610caa9190810190612e03565b9050610cc1848483805190602001208489876119e1565b5050505b5050505050505050505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610d28576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610d79576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b60035460ff168015610e3b575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610e71576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805482151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f05936c6fa3a5278c36d7399d4d223151c5a0931f1e20e49b981eb139becd264790610eea90831515815260200190565b60405180910390a150565b6060610f0160086120fc565b905090565b610f34336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b610f6a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051610fc991815260200190565b60405180910390a3610ff273ffffffffffffffffffffffffffffffffffffffff84168383612109565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120548061102a5760055461102c565b805b9392505050565b611061336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b611097576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166110e4576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156112325784848281811061111757611117612e7a565b90506040020180360381019061112d9190612ea9565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561122b81612f08565b90506110fd565b505050505050565b611268336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b61129e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166112eb576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f5a9d4d530dca1a49ba7c19a3e5993629ca13c10d53047aea21bd296c5d209b278260405161133391815260200190565b60405180910390a273ffffffffffffffffffffffffffffffffffffffff909116600090815260076020526040902055565b611392336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6113c8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611415576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000805b828110156112325784818151811061143557611435612e7a565b60200260200101519150817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168673ffffffffffffffffffffffffffffffffffffffff167f745f9027a7a39b49316dfd3b723ece6a678181ad80e26fed240899bf3810dd55866040516114a791815260200190565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff861660009081526006602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000086168452909152902084905561150d81612f08565b905061141b565b611542336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b611578576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166115c5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611687336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6116bd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661170a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f64e7b0f7fb71fcc5eedacf1f0d47e39b401a8a87e0b01e1f3c0bee3a560c131a90600090a2610995600882612196565b611784336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6117ba576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611807576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff167f745f9027a7a39b49316dfd3b723ece6a678181ad80e26fed240899bf3810dd558360405161186f91815260200190565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff90921660009081526006602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60035460009060ff16156118ff575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610892565b60015473ffffffffffffffffffffffffffffffffffffffff8481169116148061197a575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561198757506001610892565b50600092915050565b600061102c8373ffffffffffffffffffffffffffffffffffffffff84166121b8565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054151561102c565b6119ec816041612f40565b82511015611a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f2144796e616d6963205369676e6174757265205468726573686f6c640000000060448201526064015b60405180910390fd5b6000808060008060005b868110156120ee576041818102890160208101516040820151919092015160ff16955090935091506000849003611d3c579193508391611aa6876041612f40565b821015611b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401611a52565b8751611b1c836020612f57565b1115611b84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401611a52565b6020828901810151895190918290611b9d908690612f57565b611ba79190612f57565b1115611c0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401611a52565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90611c6b908f908690600401612f6a565b602060405180830381865afa158015611c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cac9190612f8f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401611a52565b5050611fac565b8360ff16600103611e87578260001c94508473ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff161480611e1c57506040517f7d83297400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018c90528c1690637d83297490604401602060405180830381865afa158015611df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e199190612c8d565b15155b611e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401611a52565b611fac565b601e8460ff161115611f4c576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486611eec9190612fac565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611f3b573d6000803e3d6000fd5b505050602060405103519450611fac565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015611f9f573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611801561207257506040517f2f54bf6e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528c1690632f54bf6e90602401602060405180830381865afa15801561204e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120729190612c70565b6120d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401611a52565b84955080806120e690612f08565b915050611a65565b505050505050505050505050565b6060600061102c83612207565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610ff2908490612263565b600061102c8373ffffffffffffffffffffffffffffffffffffffff8416612372565b60008181526001830160205260408120546121ff57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610892565b506000610892565b60608160000180548060200260200160405190810160405280929190818152602001828054801561225757602002820191906000526020600020905b815481526020019060010190808311612243575b50505050509050919050565b60006122c5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124659092919063ffffffff16565b90508051600014806122e65750808060200190518101906122e69190612c70565b610ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611a52565b6000818152600183016020526040812054801561245b576000612396600183612d25565b85549091506000906123aa90600190612d25565b905081811461240f5760008660000182815481106123ca576123ca612e7a565b90600052602060002001549050808760000184815481106123ed576123ed612e7a565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061242057612420612fc5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610892565b6000915050610892565b6060612474848460008561247c565b949350505050565b60608247101561250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611a52565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516125379190612ff4565b60006040518083038185875af1925050503d8060008114612574576040519150601f19603f3d011682016040523d82523d6000602084013e612579565b606091505b509150915061258a87838387612595565b979650505050505050565b6060831561262b5782516000036126245773ffffffffffffffffffffffffffffffffffffffff85163b612624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611a52565b5081612474565b61247483838151156126405781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a529190612c5d565b80151581146109cb57600080fd5b60006020828403121561269457600080fd5b813561088c81612674565b73ffffffffffffffffffffffffffffffffffffffff811681146109cb57600080fd5b80356126cc8161269f565b919050565b6000602082840312156126e357600080fd5b813561088c8161269f565b60006020828403121561270057600080fd5b5035919050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146109cb57600080fd5b6000806040838503121561274857600080fd5b82356127538161269f565b9150602083013561276381612707565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127e4576127e461276e565b604052919050565b600067ffffffffffffffff8211156128065761280661276e565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261284357600080fd5b8135612856612851826127ec565b61279d565b81815284602083860101111561286b57600080fd5b816020850160208301376000918101602001919091529392505050565b8035600281106126cc57600080fd5b60008060008060008060008060008060006101608c8e0312156128b957600080fd5b6128c28c6126c1565b9a5060208c0135995067ffffffffffffffff8060408e013511156128e557600080fd5b6128f58e60408f01358f01612832565b995061290360608e01612888565b985060808d0135975060a08d0135965060c08d0135955061292660e08e016126c1565b94506129356101008e016126c1565b9350806101208e0135111561294957600080fd5b5061295b8d6101208e01358e01612832565b915061296a6101408d016126c1565b90509295989b509295989b9093969950565b6000806040838503121561298f57600080fd5b82359150602083013561276381612674565b6020808252825182820181905260009190848201906040850190845b818110156129ef57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016129bd565b50909695505050505050565b600080600060608486031215612a1057600080fd5b8335612a1b8161269f565b92506020840135612a2b8161269f565b929592945050506040919091013590565b600080600060408486031215612a5157600080fd5b8335612a5c8161269f565b9250602084013567ffffffffffffffff80821115612a7957600080fd5b818601915086601f830112612a8d57600080fd5b813581811115612a9c57600080fd5b8760208260061b8501011115612ab157600080fd5b6020830194508093505050509250925092565b60008060408385031215612ad757600080fd5b8235612ae28161269f565b946020939093013593505050565b600080600060608486031215612b0557600080fd5b8335612b108161269f565b925060208481013567ffffffffffffffff80821115612b2e57600080fd5b818701915087601f830112612b4257600080fd5b813581811115612b5457612b5461276e565b8060051b9150612b6584830161279d565b818152918301840191848101908a841115612b7f57600080fd5b938501935b83851015612ba95784359250612b9983612707565b8282529385019390850190612b84565b979a979950505050604095909501359450505050565b600080600060608486031215612bd457600080fd5b8335612bdf8161269f565b92506020840135612a2b81612707565b60005b83811015612c0a578181015183820152602001612bf2565b50506000910152565b60008151808452612c2b816020860160208601612bef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061102c6020830184612c13565b600060208284031215612c8257600080fd5b815161088c81612674565b600060208284031215612c9f57600080fd5b5051919050565b6000815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015612cee5780818460040360031b1b83161693505b505050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561089257610892612cf6565b600061014073ffffffffffffffffffffffffffffffffffffffff808e1684528c6020850152816040850152612d6f8285018d612c13565b925060028b10612da8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8a60608501528960808501528860a08501528760c085015280871660e08501525050612ded61010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b600060208284031215612e1557600080fd5b815167ffffffffffffffff811115612e2c57600080fd5b8201601f81018413612e3d57600080fd5b8051612e4b612851826127ec565b818152856020838501011115612e6057600080fd5b612e71826020830160208601612bef565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408284031215612ebb57600080fd5b6040516040810181811067ffffffffffffffff82111715612ede57612ede61276e565b6040528235612eec81612707565b81526020830135612efc81612674565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f3957612f39612cf6565b5060010190565b808202811582820484141761089257610892612cf6565b8082018082111561089257610892612cf6565b604081526000612f7d6040830185612c13565b8281036020840152612e718185612c13565b600060208284031215612fa157600080fd5b815161088c81612707565b60ff828116828216039081111561089257610892612cf6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008251613006818460208701612bef565b919091019291505056fea26469706673582212205eaefc853ac3eea5d33feda45b25fb9cab8d7976cdaf605391e851a0c687858164736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101af5760003560e01c806398508847116100ed578063d5273fdf11610091578063dcfaf45c1161006e578063dcfaf45c146103f6578063f039cc9b14610409578063fdb96f9a1461041c578063ffa1ad741461044157005b8063d5273fdf146103a2578063d9a349c1146103b5578063daeccc79146103c857005b8063ab9baadc116100ca578063ab9baadc14610349578063bfccf0ec1461035c578063c1a49d671461036f578063c34c08e51461038257005b8063985088471461030e5780639feee43714610321578063a7229fd91461033657005b806328c3734711610154578063562b2bb411610131578063562b2bb4146102ce57806375f0bb52146102e15780638112c4af146102f457806393271368146102fc57005b806328c373471461026057806338a631831461026957806345e3e546146102ae57005b8063112488321161018d57806311248832146101ea5780631810fe7f146102285780631f211405146102455780632516ec221461024d57005b8063032ef901146101b157806307f184f1146101c457806308f3e723146101d7575b005b6101af6101bf366004612682565b61048a565b6101af6101d23660046126d1565b610539565b6101af6101e53660046126ee565b610671565b6102156101f8366004612735565b600660209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6003546102359060ff1681565b604051901515815260200161021f565b6101af61070d565b61021561025b366004612735565b61082c565b61021560055481565b6000546102899073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161021f565b6102156102bc3660046126d1565b60076020526000908152604090205481565b6101af6102dc3660046126d1565b610898565b6101af6102ef366004612897565b6109ce565b6101af610cd2565b6101af61030a36600461297c565b5050565b6101af61031c366004612682565b610e12565b610329610ef5565b60405161021f91906129a1565b6101af6103443660046129fb565b610f06565b6102156103573660046126d1565b610ff7565b6101af61036a366004612a3c565b611033565b6101af61037d366004612ac4565b61123a565b6001546102899073ffffffffffffffffffffffffffffffffffffffff1681565b6101af6103b0366004612af0565b611364565b6101af6103c33660046126d1565b611514565b6102356103d6366004612735565b600260209081526000928352604080842090915290825290205460ff1681565b6101af6104043660046126d1565b611659565b6101af610417366004612bbf565b611756565b6004546102359074010000000000000000000000000000000000000000900460ff1681565b61047d6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161021f9190612c5d565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104db576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105d7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61069f336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6106d5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527fe238bd7a948e28ab306e420d641e9f958faf72ad64a984fb2310e4a54ad0564a9060200160405180910390a1600555565b60045473ffffffffffffffffffffffffffffffffffffffff16331461075e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036107af576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b73ffffffffffffffffffffffffffffffffffffffff821660009081526006602090815260408083207fffffffff00000000000000000000000000000000000000000000000000000000851684529091528120548061088c5760055461088e565b805b9150505b92915050565b6108c6336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6108fc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610949576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbd36f6a78bd7079b6982e2e9eb963bd26f6d2caad4bf9f9383d84f6556c2158d90600090a2610995600882611990565b6109cb576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60045474010000000000000000000000000000000000000000900460ff16610cc557336109fc6008836119b2565b80610a9257506040517f2f54bf6e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152821690632f54bf6e90602401602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190612c70565b610ac8576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3a9190612c8d565b905080600103610b4c57505050610cc5565b8b5115610b6557610b608e61025b8e612ca6565b610b6e565b610b6e8e610ff7565b9150818110610b7f57505050610cc5565b5060008273ffffffffffffffffffffffffffffffffffffffff1663e86637db8f8f8f8f8f8f8f8f8f60018e73ffffffffffffffffffffffffffffffffffffffff1663affed0e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c189190612c8d565b610c229190612d25565b6040518b63ffffffff1660e01b8152600401610c479a99989796959493929190612d38565b600060405180830381865afa158015610c64573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610caa9190810190612e03565b9050610cc1848483805190602001208489876119e1565b5050505b5050505050505050505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610d28576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610d79576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b60035460ff168015610e3b575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610e71576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805482151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f05936c6fa3a5278c36d7399d4d223151c5a0931f1e20e49b981eb139becd264790610eea90831515815260200190565b60405180910390a150565b6060610f0160086120fc565b905090565b610f34336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b610f6a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051610fc991815260200190565b60405180910390a3610ff273ffffffffffffffffffffffffffffffffffffffff84168383612109565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120548061102a5760055461102c565b805b9392505050565b611061336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b611097576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166110e4576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156112325784848281811061111757611117612e7a565b90506040020180360381019061112d9190612ea9565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561122b81612f08565b90506110fd565b505050505050565b611268336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b61129e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166112eb576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f5a9d4d530dca1a49ba7c19a3e5993629ca13c10d53047aea21bd296c5d209b278260405161133391815260200190565b60405180910390a273ffffffffffffffffffffffffffffffffffffffff909116600090815260076020526040902055565b611392336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6113c8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611415576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000805b828110156112325784818151811061143557611435612e7a565b60200260200101519150817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168673ffffffffffffffffffffffffffffffffffffffff167f745f9027a7a39b49316dfd3b723ece6a678181ad80e26fed240899bf3810dd55866040516114a791815260200190565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff861660009081526006602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000086168452909152902084905561150d81612f08565b905061141b565b611542336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b611578576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166115c5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611687336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6116bd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661170a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f64e7b0f7fb71fcc5eedacf1f0d47e39b401a8a87e0b01e1f3c0bee3a560c131a90600090a2610995600882612196565b611784336000357fffffffff00000000000000000000000000000000000000000000000000000000166118cd565b6117ba576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611807576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff167f745f9027a7a39b49316dfd3b723ece6a678181ad80e26fed240899bf3810dd558360405161186f91815260200190565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff90921660009081526006602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60035460009060ff16156118ff575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610892565b60015473ffffffffffffffffffffffffffffffffffffffff8481169116148061197a575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561198757506001610892565b50600092915050565b600061102c8373ffffffffffffffffffffffffffffffffffffffff84166121b8565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054151561102c565b6119ec816041612f40565b82511015611a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f2144796e616d6963205369676e6174757265205468726573686f6c640000000060448201526064015b60405180910390fd5b6000808060008060005b868110156120ee576041818102890160208101516040820151919092015160ff16955090935091506000849003611d3c579193508391611aa6876041612f40565b821015611b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032310000000000000000000000000000000000000000000000000000006044820152606401611a52565b8751611b1c836020612f57565b1115611b84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032320000000000000000000000000000000000000000000000000000006044820152606401611a52565b6020828901810151895190918290611b9d908690612f57565b611ba79190612f57565b1115611c0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032330000000000000000000000000000000000000000000000000000006044820152606401611a52565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90611c6b908f908690600401612f6a565b602060405180830381865afa158015611c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cac9190612f8f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032340000000000000000000000000000000000000000000000000000006044820152606401611a52565b5050611fac565b8360ff16600103611e87578260001c94508473ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff161480611e1c57506040517f7d83297400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018c90528c1690637d83297490604401602060405180830381865afa158015611df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e199190612c8d565b15155b611e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032350000000000000000000000000000000000000000000000000000006044820152606401611a52565b611fac565b601e8460ff161115611f4c576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486611eec9190612fac565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611f3b573d6000803e3d6000fd5b505050602060405103519450611fac565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015611f9f573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611801561207257506040517f2f54bf6e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528c1690632f54bf6e90602401602060405180830381865afa15801561204e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120729190612c70565b6120d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f47533032360000000000000000000000000000000000000000000000000000006044820152606401611a52565b84955080806120e690612f08565b915050611a65565b505050505050505050505050565b6060600061102c83612207565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610ff2908490612263565b600061102c8373ffffffffffffffffffffffffffffffffffffffff8416612372565b60008181526001830160205260408120546121ff57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610892565b506000610892565b60608160000180548060200260200160405190810160405280929190818152602001828054801561225757602002820191906000526020600020905b815481526020019060010190808311612243575b50505050509050919050565b60006122c5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124659092919063ffffffff16565b90508051600014806122e65750808060200190518101906122e69190612c70565b610ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611a52565b6000818152600183016020526040812054801561245b576000612396600183612d25565b85549091506000906123aa90600190612d25565b905081811461240f5760008660000182815481106123ca576123ca612e7a565b90600052602060002001549050808760000184815481106123ed576123ed612e7a565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061242057612420612fc5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610892565b6000915050610892565b6060612474848460008561247c565b949350505050565b60608247101561250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611a52565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516125379190612ff4565b60006040518083038185875af1925050503d8060008114612574576040519150601f19603f3d011682016040523d82523d6000602084013e612579565b606091505b509150915061258a87838387612595565b979650505050505050565b6060831561262b5782516000036126245773ffffffffffffffffffffffffffffffffffffffff85163b612624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611a52565b5081612474565b61247483838151156126405781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a529190612c5d565b80151581146109cb57600080fd5b60006020828403121561269457600080fd5b813561088c81612674565b73ffffffffffffffffffffffffffffffffffffffff811681146109cb57600080fd5b80356126cc8161269f565b919050565b6000602082840312156126e357600080fd5b813561088c8161269f565b60006020828403121561270057600080fd5b5035919050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146109cb57600080fd5b6000806040838503121561274857600080fd5b82356127538161269f565b9150602083013561276381612707565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127e4576127e461276e565b604052919050565b600067ffffffffffffffff8211156128065761280661276e565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261284357600080fd5b8135612856612851826127ec565b61279d565b81815284602083860101111561286b57600080fd5b816020850160208301376000918101602001919091529392505050565b8035600281106126cc57600080fd5b60008060008060008060008060008060006101608c8e0312156128b957600080fd5b6128c28c6126c1565b9a5060208c0135995067ffffffffffffffff8060408e013511156128e557600080fd5b6128f58e60408f01358f01612832565b995061290360608e01612888565b985060808d0135975060a08d0135965060c08d0135955061292660e08e016126c1565b94506129356101008e016126c1565b9350806101208e0135111561294957600080fd5b5061295b8d6101208e01358e01612832565b915061296a6101408d016126c1565b90509295989b509295989b9093969950565b6000806040838503121561298f57600080fd5b82359150602083013561276381612674565b6020808252825182820181905260009190848201906040850190845b818110156129ef57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016129bd565b50909695505050505050565b600080600060608486031215612a1057600080fd5b8335612a1b8161269f565b92506020840135612a2b8161269f565b929592945050506040919091013590565b600080600060408486031215612a5157600080fd5b8335612a5c8161269f565b9250602084013567ffffffffffffffff80821115612a7957600080fd5b818601915086601f830112612a8d57600080fd5b813581811115612a9c57600080fd5b8760208260061b8501011115612ab157600080fd5b6020830194508093505050509250925092565b60008060408385031215612ad757600080fd5b8235612ae28161269f565b946020939093013593505050565b600080600060608486031215612b0557600080fd5b8335612b108161269f565b925060208481013567ffffffffffffffff80821115612b2e57600080fd5b818701915087601f830112612b4257600080fd5b813581811115612b5457612b5461276e565b8060051b9150612b6584830161279d565b818152918301840191848101908a841115612b7f57600080fd5b938501935b83851015612ba95784359250612b9983612707565b8282529385019390850190612b84565b979a979950505050604095909501359450505050565b600080600060608486031215612bd457600080fd5b8335612bdf8161269f565b92506020840135612a2b81612707565b60005b83811015612c0a578181015183820152602001612bf2565b50506000910152565b60008151808452612c2b816020860160208601612bef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061102c6020830184612c13565b600060208284031215612c8257600080fd5b815161088c81612674565b600060208284031215612c9f57600080fd5b5051919050565b6000815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015612cee5780818460040360031b1b83161693505b505050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561089257610892612cf6565b600061014073ffffffffffffffffffffffffffffffffffffffff808e1684528c6020850152816040850152612d6f8285018d612c13565b925060028b10612da8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8a60608501528960808501528860a08501528760c085015280871660e08501525050612ded61010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b600060208284031215612e1557600080fd5b815167ffffffffffffffff811115612e2c57600080fd5b8201601f81018413612e3d57600080fd5b8051612e4b612851826127ec565b818152856020838501011115612e6057600080fd5b612e71826020830160208601612bef565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408284031215612ebb57600080fd5b6040516040810181811067ffffffffffffffff82111715612ede57612ede61276e565b6040528235612eec81612707565b81526020830135612efc81612674565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f3957612f39612cf6565b5060010190565b808202811582820484141761089257610892612cf6565b8082018082111561089257610892612cf6565b604081526000612f7d6040830185612c13565b8281036020840152612e718185612c13565b600060208284031215612fa157600080fd5b815161088c81612707565b60ff828116828216039081111561089257610892612cf6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008251613006818460208701612bef565b919091019291505056fea26469706673582212205eaefc853ac3eea5d33feda45b25fb9cab8d7976cdaf605391e851a0c687858164736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/strategies/AbstractStrategy.sol/AbstractStrategy.json b/apps/dapp/abi/contracts/v2/strategies/AbstractStrategy.sol/AbstractStrategy.json new file mode 100644 index 000000000..b368f9e9f --- /dev/null +++ b/apps/dapp/abi/contracts/v2/strategies/AbstractStrategy.sol/AbstractStrategy.json @@ -0,0 +1,675 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AbstractStrategy", + "sourceName": "contracts/v2/strategies/AbstractStrategy.sol", + "abi": [ + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "expected", + "type": "string" + }, + { + "internalType": "string", + "name": "actual", + "type": "string" + } + ], + "name": "InvalidVersion", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "OnlyTreasuryReserveVault", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "name": "AssetBalancesCheckpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "ManualAdjustmentsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Shutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenAllowanceSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trv", + "type": "address" + } + ], + "name": "TreasuryReservesVaultSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "name": "automatedShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "debtCeilingUpdated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manualAdjustments", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "populateParamsData", + "type": "bytes" + } + ], + "name": "populateShutdownData", + "outputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "setManualAdjustments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setTokenAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trv", + "type": "address" + } + ], + "name": "setTreasuryReservesVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/strategies/DsrBaseStrategy.sol/DsrBaseStrategy.json b/apps/dapp/abi/contracts/v2/strategies/DsrBaseStrategy.sol/DsrBaseStrategy.json new file mode 100644 index 000000000..326c1406e --- /dev/null +++ b/apps/dapp/abi/contracts/v2/strategies/DsrBaseStrategy.sol/DsrBaseStrategy.json @@ -0,0 +1,904 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DsrBaseStrategy", + "sourceName": "contracts/v2/strategies/DsrBaseStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "string", + "name": "_strategyName", + "type": "string" + }, + { + "internalType": "address", + "name": "_treasuryReservesVault", + "type": "address" + }, + { + "internalType": "address", + "name": "_daiToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_daiJoin", + "type": "address" + }, + { + "internalType": "address", + "name": "_pot", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "expected", + "type": "string" + }, + { + "internalType": "string", + "name": "actual", + "type": "string" + } + ], + "name": "InvalidVersion", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "OnlyTreasuryReserveVault", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "name": "AssetBalancesCheckpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "DaiDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "DaiWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "ManualAdjustmentsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Shutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenAllowanceSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trv", + "type": "address" + } + ], + "name": "TreasuryReservesVaultSet", + "type": "event" + }, + { + "inputs": [], + "name": "RAY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "name": "automatedShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "borrowAndDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daiJoin", + "outputs": [ + { + "internalType": "contract IMakerDaoDaiJoinLike", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daiToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "debtCeilingUpdated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestDsrBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manualAdjustments", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "populateParamsData", + "type": "bytes" + } + ], + "name": "populateShutdownData", + "outputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pot", + "outputs": [ + { + "internalType": "contract IMakerDaoPotLike", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "setManualAdjustments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setTokenAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trv", + "type": "address" + } + ], + "name": "setTreasuryReservesVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "trvDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestedAmount", + "type": "uint256" + } + ], + "name": "trvWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawalAmount", + "type": "uint256" + } + ], + "name": "withdrawAndRepay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawAndRepayAll", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60e06040523480156200001157600080fd5b50604051620044a2380380620044a283398101604081905262000034916200086a565b8686868683836001600160a01b038216620000625760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166200008a5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000bd5760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556005620000f7838262000a23565b50600680546001600160a01b0319166001600160a01b03928316179055851660a0819052604080516336569e7760e01b81529051600095509193506336569e7792506004808201926020929091908290030181865afa1580156200015f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000185919062000aef565b6001600160a01b0383811660c05260a0516040516328ec8bf160e21b8152908216600482015291925082169063a3b22fc490602401600060405180830381600087803b158015620001d557600080fd5b505af1158015620001ea573d6000803e3d6000fd5b505060c0516040516328ec8bf160e21b81526001600160a01b039182166004820152908416925063a3b22fc49150602401600060405180830381600087803b1580156200023657600080fd5b505af11580156200024b573d6000803e3d6000fd5b5050506001600160a01b038516608081905260a0516200026f92506000196200028a565b6200027c600086620003eb565b505050505050505062000bcd565b801580620003085750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015620002e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000306919062000b14565b155b620003805760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b6040516001600160a01b038316602482015260448101829052620003e690849063095ea7b360e01b906064015b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b0393841617905290620003ff16565b505050565b608051620003fb908383620004d3565b5050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200044e906001600160a01b03851690849062000500565b90508051600014806200047257508080602001905181019062000472919062000b2e565b620003e65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000377565b6001600160a01b03821615620004f157620004f18383600062000519565b620003e6838260001962000519565b6060620005118484600085620005cc565b949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000566573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058c919062000b14565b81036200059857505050565b620005af6001600160a01b0384168360006200028a565b8015620003e657620003e66001600160a01b0384168383620006b0565b6060824710156200062f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000377565b600080866001600160a01b031685876040516200064d919062000b52565b60006040518083038185875af1925050503d80600081146200068c576040519150601f19603f3d011682016040523d82523d6000602084013e62000691565b606091505b509092509050620006a5878383876200076a565b979650505050505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801562000701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000727919062000b14565b9050620007648463095ea7b360e01b8562000743868662000b70565b6040516001600160a01b0390921660248301526044820152606401620003ad565b50505050565b60608315620007de578251600003620007d6576001600160a01b0385163b620007d65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000377565b508162000511565b620005118383815115620007f55781518083602001fd5b8060405162461bcd60e51b815260040162000377919062000b98565b80516001600160a01b03811681146200082957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200086157818101518382015260200162000847565b50506000910152565b600080600080600080600060e0888a0312156200088657600080fd5b620008918862000811565b9650620008a16020890162000811565b60408901519096506001600160401b0380821115620008bf57600080fd5b818a0191508a601f830112620008d457600080fd5b815181811115620008e957620008e96200082e565b604051601f8201601f19908116603f011681019083821181831017156200091457620009146200082e565b816040528281528d60208487010111156200092e57600080fd5b6200094183602083016020880162000844565b8099505050505050620009576060890162000811565b9350620009676080890162000811565b92506200097760a0890162000811565b91506200098760c0890162000811565b905092959891949750929550565b600181811c90821680620009aa57607f821691505b602082108103620009cb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003e657600081815260208120601f850160051c81016020861015620009fa5750805b601f850160051c820191505b8181101562000a1b5782815560010162000a06565b505050505050565b81516001600160401b0381111562000a3f5762000a3f6200082e565b62000a578162000a50845462000995565b84620009d1565b602080601f83116001811462000a8f576000841562000a765750858301515b600019600386901b1c1916600185901b17855562000a1b565b600085815260208120601f198616915b8281101562000ac05788860151825594840194600190910190840162000a9f565b508582101562000adf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000b0257600080fd5b62000b0d8262000811565b9392505050565b60006020828403121562000b2757600080fd5b5051919050565b60006020828403121562000b4157600080fd5b8151801515811462000b0d57600080fd5b6000825162000b6681846020870162000844565b9190910192915050565b8082018082111562000b9257634e487b7160e01b600052601160045260246000fd5b92915050565b602081526000825180602084015262000bb981604085016020870162000844565b601f01601f19169190910160400192915050565b60805160a05160c05161380b62000c976000396000818161037b0152818161097401528181610a0e01528181610aaf01528181610b4101528181610c3d01528181612330015281816123f20152818161276901528181612b2c01528181612bc10152612c550152600081816104600152818161249601526126cb01526000818161042601528181611169015281816112d5015281816113680152818161157c0152818161195801528181611ba701528181611f31015281816122cc015261280f015261380b6000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80638112c4af1161012a578063ce5c715a116100bd578063e173ad251161008c578063e337e11d11610071578063e337e11d1461050e578063eecb7c1b14610521578063f40902561461053457600080fd5b8063e173ad25146104fe578063e32145341461050657600080fd5b8063ce5c715a146104a2578063d9a349c1146104aa578063daeccc79146104bd578063db4f5e23146104eb57600080fd5b8063be22f546116100f9578063be22f54614610421578063bfccf0ec14610448578063c11645bc1461045b578063c34c08e51461048257600080fd5b80638112c4af146103f15780638fece34b146103f9578063a25db5e2146102e8578063a7229fd91461040e57600080fd5b80633698e122116101bd5780635137bf161161018c57806359eef8ce1161017157806359eef8ce146103c35780636c45bc93146103d65780637b454884146103de57600080fd5b80635137bf161461039d578063552033c4146103b057600080fd5b80633698e1221461032a57806338a63183146103405780634a6c983b146103605780634ba2363a1461037657600080fd5b80631810fe7f116101f95780631810fe7f146102b05780631ed760b4146102cd5780631f211405146102e057806325829410146102e857600080fd5b8063032ef9011461022b57806307f184f114610240578063097b144e14610253578063101d168414610266575b600080fd5b61023e610239366004613063565b610547565b005b61023e61024e3660046130a2565b6105f6565b61023e6102613660046130bf565b61072e565b6006546102869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546102bd9060ff1681565b60405190151581526020016102a7565b61023e6102db366004613100565b6107fb565b61023e610850565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b6040516102a7919061319a565b61033261096f565b6040519081526020016102a7565b6000546102869073ffffffffffffffffffffffffffffffffffffffff1681565b61031d61036e3660046131ad565b606092915050565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61023e6103ab36600461326b565b610cb4565b6103326b033b2e3c9fd0803ce800000081565b61023e6103d13660046130a2565b610db7565b6103326110a9565b61023e6103ec3660046132ad565b6111e2565b61023e6113e1565b610401611521565b6040516102a791906132c6565b61023e61041c3660046130bf565b611613565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61023e61045636600461332b565b611704565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b6001546102869073ffffffffffffffffffffffffffffffffffffffff1681565b61040161190b565b61023e6104b83660046130a2565b6119be565b6102bd6104cb3660046133b5565b600260209081526000928352604080842090915290825290205460ff1681565b61023e6104f93660046132ad565b611b03565b61031d611c25565b610401611cb3565b61023e61051c3660046131ad565b611d35565b61033261052f3660046132ad565b611e4c565b61023e6105423660046132ad565b611f63565b60005473ffffffffffffffffffffffffffffffffffffffff163314610598576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610647576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610694576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61075c336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b610792576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079d8383836120bd565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff16331461084c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff1633146108a1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036108f2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0191906133ea565b90506000814211610aa0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b91906133ea565b610bf1565b6b033b2e3c9fd0803ce80000007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3c91906133ea565b610bdd7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663487bf0826040518163ffffffff1660e01b8152600401602060405180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce91906133ea565b610bd88642613432565b6121a7565b610be79190613445565b610bf1919061345c565b6040517f0bebac86000000000000000000000000000000000000000000000000000000008152306004820152909150610cad90829073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630bebac8690602401602060405180830381865afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca891906133ea565b61229d565b9250505090565b610ce2336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b610d18576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2460076000612ff7565b8060005b81811015610d85576007848483818110610d4457610d44613497565b835460018101855560009485526020909420604090910292909201926002029091019050610d7282826134c6565b505080610d7e9061351e565b9050610d28565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b383836040516107ee929190613556565b610de5336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b610e1b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e68576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a2600654610ecc9073ffffffffffffffffffffffffffffffffffffffff16826122c7565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015610f65573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fab91908101906135eb565b9050610fe760408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b604051602001610ff791906136ab565b604051602081830303815290604052805190602001208160405160200161101e91906136ab565b604051602081830303815290604052805190602001201461084c57604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c1480000000000000000000000000000000000000000000000000000000081526110a0919083906004016136c7565b60405180910390fd5b60006110d9336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b61110f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061111a6122f2565b925050915061112981836123c3565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820185905230604483015290911690635ceae9c490606401600060405180830381600087803b1580156111c357600080fd5b505af11580156111d7573d6000803e3d6000fd5b509394505050505090565b611210336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611246576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611280576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061128b6122f2565b509150915081831115611310576040517fdb42144d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260248101849052604481018390526064016110a0565b600061131c8483612546565b905061132881856123c3565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820187905230604483015290911690635ceae9c4906064015b600060405180830381600087803b1580156113c357600080fd5b505af11580156113d7573d6000803e3d6000fd5b5050505050505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611437576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611488576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060600061152d6122f2565b5050604080516001808252818301909252919250816020015b604080518082019091526000808252602082015281526020019060019003908161154657905050915060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250826000815181106115cd576115cd613497565b60200260200101819052507f712b3b0a5f3cb040d45cf2a931e77b8db33017aa563d0109a6d97c20dd74b39d8260405161160791906132c6565b60405180910390a15090565b611641336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611677576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516116d691815260200190565b60405180910390a36116ff73ffffffffffffffffffffffffffffffffffffffff84168383612574565b505050565b611732336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611768576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166117b5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015611903578484828181106117e8576117e8613497565b9050604002018036038101906117fe91906136f5565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556118fc8161351e565b90506117ce565b505050505050565b604080516001808252818301909252606091816020015b604080518082019091526000808252602082015281526020019060019003908161192257905050905060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200161199a61096f565b815250816000815181106119b0576119b0613497565b602002602001018190525090565b6119ec336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611a22576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611a6f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611b31336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611b67576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690636c665a5590606401600060405180830381600087803b158015611c0157600080fd5b505af1158015611c15573d6000803e3d6000fd5b50505050611c2281612648565b50565b60058054611c3290613752565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5e90613752565b8015611cab5780601f10611c8057610100808354040283529160200191611cab565b820191906000526020600020905b815481529060010190602001808311611c8e57829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015611d2c5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611cd7565b50505050905090565b611d63336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611d99576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da382826127af565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb906024015b600060405180830381600087803b158015611e3857600080fd5b505af1158015611903573d6000803e3d6000fd5b60065460009073ffffffffffffffffffffffffffffffffffffffff16338114611ea3576040517fbc1e53f70000000000000000000000000000000000000000000000000000000081523360048201526024016110a0565b82600003611edd576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000611eea6122f2565b9250925092506000611efc8784612546565b905081811115611f0d578396508190505b611f1781886123c3565b611f5873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168689612574565b509495945050505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611fb6576040517fbc1e53f70000000000000000000000000000000000000000000000000000000081523360048201526024016110a0565b80600003611ff0576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c2281612648565b60035460009060ff161561202b575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146120b7565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806120a6575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156120b3575060016120b7565b5060005b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215391906133ea565b810361215e57505050565b61218073ffffffffffffffffffffffffffffffffffffffff841683600061285a565b80156116ff576116ff73ffffffffffffffffffffffffffffffffffffffff841683836129dc565b6000828015612274576001831680156121c2578492506121d2565b6b033b2e3c9fd0803ce800000092505b506002909204916b019d971e4fe8401e740000005b831561226e5784850285868204146121fe57600080fd5b8181018181101561220e57600080fd5b6b033b2e3c9fd0803ce80000009004955050600184161561226357848302838682041415861515161561224057600080fd5b8181018181101561225057600080fd5b6b033b2e3c9fd0803ce800000090049350505b6002840493506121e7565b50612296565b8280156122845760009250612294565b6b033b2e3c9fd0803ce800000092505b505b5092915050565b60006b033b2e3c9fd0803ce80000006122b68385613445565b6122c0919061345c565b9392505050565b61084c7f00000000000000000000000000000000000000000000000000000000000000008383612ad5565b60008060006122ff612b28565b6040517f0bebac860000000000000000000000000000000000000000000000000000000081523060048201529092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630bebac8690602401602060405180830381865afa15801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b091906133ea565b90506123bc828261229d565b9250909192565b6040517f7f8661a1000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690637f8661a190602401600060405180830381600087803b15801561244b57600080fd5b505af115801561245f573d6000803e3d6000fd5b50506040517fef693bed000000000000000000000000000000000000000000000000000000008152306004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063ef693bed9150604401600060405180830381600087803b1580156124f157600080fd5b505af1158015612505573d6000803e3d6000fd5b505050507f35ce9a92825e20b0f22cb7effbaab12a8404e2442adec3360b1a6c2e03c234418160405161253a91815260200190565b60405180910390a15050565b600081612554600182613432565b61256a6b033b2e3c9fd0803ce800000086613445565b6122b691906137a5565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526116ff9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612cc0565b600061265b82612656612b28565b612dcf565b90507f4c9c073bfd59be8210e93d13794dbfdb0c60612379740185fddfbc97f83d577e8260405161268e91815260200190565b60405180910390a16040517f3b4da69f000000000000000000000000000000000000000000000000000000008152306004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633b4da69f90604401600060405180830381600087803b15801561272457600080fd5b505af1158015612738573d6000803e3d6000fd5b50506040517f049878f3000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063049878f39150602401611e1e565b6000806127ba6122f2565b92505091506127c981836123c3565b8115612854576006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820185905230604483015290911690635ceae9c4906064016113a9565b50505050565b8015806128fa57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156128d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f891906133ea565b155b612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016110a0565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526116ff9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016125c6565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7691906133ea565b9050612854847f095ea7b30000000000000000000000000000000000000000000000000000000085612aa886866137a5565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064016125c6565b73ffffffffffffffffffffffffffffffffffffffff821615612afd57612afd838360006120bd565b6116ff83827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6120bd565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb991906133ea565b4211612c53577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4e91906133ea565b905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f678cca6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612c2a573d6000803e3d6000fd5b6000612d22826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612de89092919063ffffffff16565b9050805160001480612d43575080806020019051810190612d4391906137b8565b6116ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016110a0565b6000816122b66b033b2e3c9fd0803ce800000085613445565b6060612df78484600085612dff565b949350505050565b606082471015612e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016110a0565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612eba91906136ab565b60006040518083038185875af1925050503d8060008114612ef7576040519150601f19603f3d011682016040523d82523d6000602084013e612efc565b606091505b5091509150612f0d87838387612f18565b979650505050505050565b60608315612fae578251600003612fa75773ffffffffffffffffffffffffffffffffffffffff85163b612fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016110a0565b5081612df7565b612df78383815115612fc35781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0919061319a565b5080546000825560020290600052602060002090810190611c2291905b808211156130515780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201613014565b5090565b8015158114611c2257600080fd5b60006020828403121561307557600080fd5b81356122c081613055565b73ffffffffffffffffffffffffffffffffffffffff81168114611c2257600080fd5b6000602082840312156130b457600080fd5b81356122c081613080565b6000806000606084860312156130d457600080fd5b83356130df81613080565b925060208401356130ef81613080565b929592945050506040919091013590565b6000806040838503121561311357600080fd5b823561311e81613080565b946020939093013593505050565b60005b8381101561314757818101518382015260200161312f565b50506000910152565b6000815180845261316881602086016020860161312c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006122c06020830184613150565b600080602083850312156131c057600080fd5b823567ffffffffffffffff808211156131d857600080fd5b818501915085601f8301126131ec57600080fd5b8135818111156131fb57600080fd5b86602082850101111561320d57600080fd5b60209290920196919550909350505050565b60008083601f84011261323157600080fd5b50813567ffffffffffffffff81111561324957600080fd5b6020830191508360208260061b850101111561326457600080fd5b9250929050565b6000806020838503121561327e57600080fd5b823567ffffffffffffffff81111561329557600080fd5b6132a18582860161321f565b90969095509350505050565b6000602082840312156132bf57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561331e578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016132e3565b5091979650505050505050565b60008060006040848603121561334057600080fd5b833561334b81613080565b9250602084013567ffffffffffffffff81111561336757600080fd5b6133738682870161321f565b9497909650939450505050565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146133b057600080fd5b919050565b600080604083850312156133c857600080fd5b82356133d381613080565b91506133e160208401613380565b90509250929050565b6000602082840312156133fc57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156120b7576120b7613403565b80820281158282048414176120b7576120b7613403565b600082613492577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81356134d181613080565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361354f5761354f613403565b5060010190565b6020808252818101839052600090604080840186845b878110156135af57813561357f81613080565b73ffffffffffffffffffffffffffffffffffffffff1683528185013585840152918301919083019060010161356c565b5090979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156135fd57600080fd5b815167ffffffffffffffff8082111561361557600080fd5b818401915084601f83011261362957600080fd5b81518181111561363b5761363b6135bc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613681576136816135bc565b8160405282815287602084870101111561369a57600080fd5b612f0d83602083016020880161312c565b600082516136bd81846020870161312c565b9190910192915050565b6040815260006136da6040830185613150565b82810360208401526136ec8185613150565b95945050505050565b60006040828403121561370757600080fd5b6040516040810181811067ffffffffffffffff8211171561372a5761372a6135bc565b60405261373683613380565b8152602083013561374681613055565b60208201529392505050565b600181811c9082168061376657607f821691505b60208210810361379f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156120b7576120b7613403565b6000602082840312156137ca57600080fd5b81516122c08161305556fea26469706673582212200a4710626f7cf5f6307be09f1d37862c79cb137510db5079ddc9c4aec4ecbe2264736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102265760003560e01c80638112c4af1161012a578063ce5c715a116100bd578063e173ad251161008c578063e337e11d11610071578063e337e11d1461050e578063eecb7c1b14610521578063f40902561461053457600080fd5b8063e173ad25146104fe578063e32145341461050657600080fd5b8063ce5c715a146104a2578063d9a349c1146104aa578063daeccc79146104bd578063db4f5e23146104eb57600080fd5b8063be22f546116100f9578063be22f54614610421578063bfccf0ec14610448578063c11645bc1461045b578063c34c08e51461048257600080fd5b80638112c4af146103f15780638fece34b146103f9578063a25db5e2146102e8578063a7229fd91461040e57600080fd5b80633698e122116101bd5780635137bf161161018c57806359eef8ce1161017157806359eef8ce146103c35780636c45bc93146103d65780637b454884146103de57600080fd5b80635137bf161461039d578063552033c4146103b057600080fd5b80633698e1221461032a57806338a63183146103405780634a6c983b146103605780634ba2363a1461037657600080fd5b80631810fe7f116101f95780631810fe7f146102b05780631ed760b4146102cd5780631f211405146102e057806325829410146102e857600080fd5b8063032ef9011461022b57806307f184f114610240578063097b144e14610253578063101d168414610266575b600080fd5b61023e610239366004613063565b610547565b005b61023e61024e3660046130a2565b6105f6565b61023e6102613660046130bf565b61072e565b6006546102869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546102bd9060ff1681565b60405190151581526020016102a7565b61023e6102db366004613100565b6107fb565b61023e610850565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b6040516102a7919061319a565b61033261096f565b6040519081526020016102a7565b6000546102869073ffffffffffffffffffffffffffffffffffffffff1681565b61031d61036e3660046131ad565b606092915050565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61023e6103ab36600461326b565b610cb4565b6103326b033b2e3c9fd0803ce800000081565b61023e6103d13660046130a2565b610db7565b6103326110a9565b61023e6103ec3660046132ad565b6111e2565b61023e6113e1565b610401611521565b6040516102a791906132c6565b61023e61041c3660046130bf565b611613565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61023e61045636600461332b565b611704565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b6001546102869073ffffffffffffffffffffffffffffffffffffffff1681565b61040161190b565b61023e6104b83660046130a2565b6119be565b6102bd6104cb3660046133b5565b600260209081526000928352604080842090915290825290205460ff1681565b61023e6104f93660046132ad565b611b03565b61031d611c25565b610401611cb3565b61023e61051c3660046131ad565b611d35565b61033261052f3660046132ad565b611e4c565b61023e6105423660046132ad565b611f63565b60005473ffffffffffffffffffffffffffffffffffffffff163314610598576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610647576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610694576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61075c336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b610792576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079d8383836120bd565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff16331461084c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff1633146108a1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036108f2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0191906133ea565b90506000814211610aa0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b91906133ea565b610bf1565b6b033b2e3c9fd0803ce80000007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3c91906133ea565b610bdd7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663487bf0826040518163ffffffff1660e01b8152600401602060405180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce91906133ea565b610bd88642613432565b6121a7565b610be79190613445565b610bf1919061345c565b6040517f0bebac86000000000000000000000000000000000000000000000000000000008152306004820152909150610cad90829073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630bebac8690602401602060405180830381865afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca891906133ea565b61229d565b9250505090565b610ce2336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b610d18576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d2460076000612ff7565b8060005b81811015610d85576007848483818110610d4457610d44613497565b835460018101855560009485526020909420604090910292909201926002029091019050610d7282826134c6565b505080610d7e9061351e565b9050610d28565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b383836040516107ee929190613556565b610de5336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b610e1b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e68576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a2600654610ecc9073ffffffffffffffffffffffffffffffffffffffff16826122c7565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015610f65573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fab91908101906135eb565b9050610fe760408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b604051602001610ff791906136ab565b604051602081830303815290604052805190602001208160405160200161101e91906136ab565b604051602081830303815290604052805190602001201461084c57604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c1480000000000000000000000000000000000000000000000000000000081526110a0919083906004016136c7565b60405180910390fd5b60006110d9336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b61110f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061111a6122f2565b925050915061112981836123c3565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820185905230604483015290911690635ceae9c490606401600060405180830381600087803b1580156111c357600080fd5b505af11580156111d7573d6000803e3d6000fd5b509394505050505090565b611210336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611246576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611280576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061128b6122f2565b509150915081831115611310576040517fdb42144d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260248101849052604481018390526064016110a0565b600061131c8483612546565b905061132881856123c3565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820187905230604483015290911690635ceae9c4906064015b600060405180830381600087803b1580156113c357600080fd5b505af11580156113d7573d6000803e3d6000fd5b5050505050505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611437576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611488576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060600061152d6122f2565b5050604080516001808252818301909252919250816020015b604080518082019091526000808252602082015281526020019060019003908161154657905050915060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250826000815181106115cd576115cd613497565b60200260200101819052507f712b3b0a5f3cb040d45cf2a931e77b8db33017aa563d0109a6d97c20dd74b39d8260405161160791906132c6565b60405180910390a15090565b611641336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611677576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516116d691815260200190565b60405180910390a36116ff73ffffffffffffffffffffffffffffffffffffffff84168383612574565b505050565b611732336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611768576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166117b5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015611903578484828181106117e8576117e8613497565b9050604002018036038101906117fe91906136f5565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556118fc8161351e565b90506117ce565b505050505050565b604080516001808252818301909252606091816020015b604080518082019091526000808252602082015281526020019060019003908161192257905050905060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200161199a61096f565b815250816000815181106119b0576119b0613497565b602002602001018190525090565b6119ec336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611a22576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611a6f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611b31336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611b67576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690636c665a5590606401600060405180830381600087803b158015611c0157600080fd5b505af1158015611c15573d6000803e3d6000fd5b50505050611c2281612648565b50565b60058054611c3290613752565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5e90613752565b8015611cab5780601f10611c8057610100808354040283529160200191611cab565b820191906000526020600020905b815481529060010190602001808311611c8e57829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015611d2c5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611cd7565b50505050905090565b611d63336000357fffffffff0000000000000000000000000000000000000000000000000000000016611ff9565b611d99576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da382826127af565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb906024015b600060405180830381600087803b158015611e3857600080fd5b505af1158015611903573d6000803e3d6000fd5b60065460009073ffffffffffffffffffffffffffffffffffffffff16338114611ea3576040517fbc1e53f70000000000000000000000000000000000000000000000000000000081523360048201526024016110a0565b82600003611edd576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000611eea6122f2565b9250925092506000611efc8784612546565b905081811115611f0d578396508190505b611f1781886123c3565b611f5873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168689612574565b509495945050505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611fb6576040517fbc1e53f70000000000000000000000000000000000000000000000000000000081523360048201526024016110a0565b80600003611ff0576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c2281612648565b60035460009060ff161561202b575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146120b7565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806120a6575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156120b3575060016120b7565b5060005b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215391906133ea565b810361215e57505050565b61218073ffffffffffffffffffffffffffffffffffffffff841683600061285a565b80156116ff576116ff73ffffffffffffffffffffffffffffffffffffffff841683836129dc565b6000828015612274576001831680156121c2578492506121d2565b6b033b2e3c9fd0803ce800000092505b506002909204916b019d971e4fe8401e740000005b831561226e5784850285868204146121fe57600080fd5b8181018181101561220e57600080fd5b6b033b2e3c9fd0803ce80000009004955050600184161561226357848302838682041415861515161561224057600080fd5b8181018181101561225057600080fd5b6b033b2e3c9fd0803ce800000090049350505b6002840493506121e7565b50612296565b8280156122845760009250612294565b6b033b2e3c9fd0803ce800000092505b505b5092915050565b60006b033b2e3c9fd0803ce80000006122b68385613445565b6122c0919061345c565b9392505050565b61084c7f00000000000000000000000000000000000000000000000000000000000000008383612ad5565b60008060006122ff612b28565b6040517f0bebac860000000000000000000000000000000000000000000000000000000081523060048201529092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630bebac8690602401602060405180830381865afa15801561238c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b091906133ea565b90506123bc828261229d565b9250909192565b6040517f7f8661a1000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690637f8661a190602401600060405180830381600087803b15801561244b57600080fd5b505af115801561245f573d6000803e3d6000fd5b50506040517fef693bed000000000000000000000000000000000000000000000000000000008152306004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063ef693bed9150604401600060405180830381600087803b1580156124f157600080fd5b505af1158015612505573d6000803e3d6000fd5b505050507f35ce9a92825e20b0f22cb7effbaab12a8404e2442adec3360b1a6c2e03c234418160405161253a91815260200190565b60405180910390a15050565b600081612554600182613432565b61256a6b033b2e3c9fd0803ce800000086613445565b6122b691906137a5565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526116ff9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612cc0565b600061265b82612656612b28565b612dcf565b90507f4c9c073bfd59be8210e93d13794dbfdb0c60612379740185fddfbc97f83d577e8260405161268e91815260200190565b60405180910390a16040517f3b4da69f000000000000000000000000000000000000000000000000000000008152306004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633b4da69f90604401600060405180830381600087803b15801561272457600080fd5b505af1158015612738573d6000803e3d6000fd5b50506040517f049878f3000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063049878f39150602401611e1e565b6000806127ba6122f2565b92505091506127c981836123c3565b8115612854576006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820185905230604483015290911690635ceae9c4906064016113a9565b50505050565b8015806128fa57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156128d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f891906133ea565b155b612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016110a0565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526116ff9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016125c6565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7691906133ea565b9050612854847f095ea7b30000000000000000000000000000000000000000000000000000000085612aa886866137a5565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064016125c6565b73ffffffffffffffffffffffffffffffffffffffff821615612afd57612afd838360006120bd565b6116ff83827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6120bd565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb991906133ea565b4211612c53577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4e91906133ea565b905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639f678cca6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612c2a573d6000803e3d6000fd5b6000612d22826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612de89092919063ffffffff16565b9050805160001480612d43575080806020019051810190612d4391906137b8565b6116ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016110a0565b6000816122b66b033b2e3c9fd0803ce800000085613445565b6060612df78484600085612dff565b949350505050565b606082471015612e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016110a0565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612eba91906136ab565b60006040518083038185875af1925050503d8060008114612ef7576040519150601f19603f3d011682016040523d82523d6000602084013e612efc565b606091505b5091509150612f0d87838387612f18565b979650505050505050565b60608315612fae578251600003612fa75773ffffffffffffffffffffffffffffffffffffffff85163b612fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016110a0565b5081612df7565b612df78383815115612fc35781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0919061319a565b5080546000825560020290600052602060002090810190611c2291905b808211156130515780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201613014565b5090565b8015158114611c2257600080fd5b60006020828403121561307557600080fd5b81356122c081613055565b73ffffffffffffffffffffffffffffffffffffffff81168114611c2257600080fd5b6000602082840312156130b457600080fd5b81356122c081613080565b6000806000606084860312156130d457600080fd5b83356130df81613080565b925060208401356130ef81613080565b929592945050506040919091013590565b6000806040838503121561311357600080fd5b823561311e81613080565b946020939093013593505050565b60005b8381101561314757818101518382015260200161312f565b50506000910152565b6000815180845261316881602086016020860161312c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006122c06020830184613150565b600080602083850312156131c057600080fd5b823567ffffffffffffffff808211156131d857600080fd5b818501915085601f8301126131ec57600080fd5b8135818111156131fb57600080fd5b86602082850101111561320d57600080fd5b60209290920196919550909350505050565b60008083601f84011261323157600080fd5b50813567ffffffffffffffff81111561324957600080fd5b6020830191508360208260061b850101111561326457600080fd5b9250929050565b6000806020838503121561327e57600080fd5b823567ffffffffffffffff81111561329557600080fd5b6132a18582860161321f565b90969095509350505050565b6000602082840312156132bf57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561331e578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016132e3565b5091979650505050505050565b60008060006040848603121561334057600080fd5b833561334b81613080565b9250602084013567ffffffffffffffff81111561336757600080fd5b6133738682870161321f565b9497909650939450505050565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146133b057600080fd5b919050565b600080604083850312156133c857600080fd5b82356133d381613080565b91506133e160208401613380565b90509250929050565b6000602082840312156133fc57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156120b7576120b7613403565b80820281158282048414176120b7576120b7613403565b600082613492577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81356134d181613080565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361354f5761354f613403565b5060010190565b6020808252818101839052600090604080840186845b878110156135af57813561357f81613080565b73ffffffffffffffffffffffffffffffffffffffff1683528185013585840152918301919083019060010161356c565b5090979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156135fd57600080fd5b815167ffffffffffffffff8082111561361557600080fd5b818401915084601f83011261362957600080fd5b81518181111561363b5761363b6135bc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613681576136816135bc565b8160405282815287602084870101111561369a57600080fd5b612f0d83602083016020880161312c565b600082516136bd81846020870161312c565b9190910192915050565b6040815260006136da6040830185613150565b82810360208401526136ec8185613150565b95945050505050565b60006040828403121561370757600080fd5b6040516040810181811067ffffffffffffffff8211171561372a5761372a6135bc565b60405261373683613380565b8152602083013561374681613055565b60208201529392505050565b600181811c9082168061376657607f821691505b60208210810361379f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156120b7576120b7613403565b6000602082840312156137ca57600080fd5b81516122c08161305556fea26469706673582212200a4710626f7cf5f6307be09f1d37862c79cb137510db5079ddc9c4aec4ecbe2264736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/strategies/GnosisStrategy.sol/GnosisStrategy.json b/apps/dapp/abi/contracts/v2/strategies/GnosisStrategy.sol/GnosisStrategy.json new file mode 100644 index 000000000..6a4d8ec2c --- /dev/null +++ b/apps/dapp/abi/contracts/v2/strategies/GnosisStrategy.sol/GnosisStrategy.json @@ -0,0 +1,930 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GnosisStrategy", + "sourceName": "contracts/v2/strategies/GnosisStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "string", + "name": "_strategyName", + "type": "string" + }, + { + "internalType": "address", + "name": "_treasuryReservesVault", + "type": "address" + }, + { + "internalType": "address", + "name": "_gnosisSafeWallet", + "type": "address" + }, + { + "internalType": "address", + "name": "_circuitBreakerProxy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "expected", + "type": "string" + }, + { + "internalType": "string", + "name": "actual", + "type": "string" + } + ], + "name": "InvalidVersion", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "OnlyTreasuryReserveVault", + "type": "error" + }, + { + "inputs": [], + "name": "Unimplemented", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "name": "AssetBalancesCheckpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_assets", + "type": "address[]" + } + ], + "name": "AssetsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "ManualAdjustmentsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Repay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Shutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenAllowanceSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trv", + "type": "address" + } + ], + "name": "TreasuryReservesVaultSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "assets", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "name": "automatedShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "borrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "borrowMax", + "outputs": [ + { + "internalType": "uint256", + "name": "borrowedAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "circuitBreakerProxy", + "outputs": [ + { + "internalType": "contract ITempleCircuitBreakerProxy", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "debtCeilingUpdated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAssets", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gnosisSafeWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manualAdjustments", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "populateParamsData", + "type": "bytes" + } + ], + "name": "populateShutdownData", + "outputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToGnosis", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "repay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "repayAll", + "outputs": [ + { + "internalType": "uint256", + "name": "repaidAmount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_assets", + "type": "address[]" + } + ], + "name": "setAssets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "setManualAdjustments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setTokenAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trv", + "type": "address" + } + ], + "name": "setTreasuryReservesVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b50604051620037bf380380620037bf83398101604081905262000034916200015f565b8585858583836001600160a01b038216620000625760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166200008a5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000bd5760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556005620000f783826200031f565b50600680546001600160a01b0319166001600160a01b039283161790559485166080525050501660a05250620003eb92505050565b80516001600160a01b03811681146200014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c087890312156200017957600080fd5b62000184876200012c565b95506020620001958189016200012c565b60408901519096506001600160401b0380821115620001b357600080fd5b818a0191508a601f830112620001c857600080fd5b815181811115620001dd57620001dd62000149565b604051601f8201601f19908116603f0116810190838211818310171562000208576200020862000149565b816040528281528d868487010111156200022157600080fd5b600093505b8284101562000245578484018601518185018701529285019262000226565b600086848301015280995050505050505062000264606088016200012c565b925062000274608088016200012c565b91506200028460a088016200012c565b90509295509295509295565b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031a57600081815260208120601f850160051c81016020861015620002f55750805b601f850160051c820191505b81811015620003165782815560010162000301565b5050505b505050565b81516001600160401b038111156200033b576200033b62000149565b62000353816200034c845462000290565b84620002cc565b602080601f8311600181146200038b5760008415620003725750858301515b600019600386901b1c1916600185901b17855562000316565b600085815260208120601f198616915b82811015620003bc578886015182559484019460019091019084016200039b565b5085821015620003db5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051613376620004496000396000818161037801528181610b7d015261169f0152600081816103ed01528181610c7801528181611489015281816114c70152818161179901528181611c700152611cf401526133766000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80637c27383b1161012a578063c34c08e5116100bd578063daeccc791161008c578063e173ad2511610071578063e173ad2514610528578063e321453414610530578063e337e11d1461053857600080fd5b8063daeccc79146104e7578063de2176251461051557600080fd5b8063c34c08e514610499578063ce5c715a146104b9578063cf35bdd0146104c1578063d9a349c1146104d457600080fd5b80639bd5c7c5116100f95780639bd5c7c514610460578063a25db5e2146102fb578063a7229fd914610473578063bfccf0ec1461048657600080fd5b80637c27383b1461040f5780638112c4af146104305780638e0aa54a146104385780638fece34b1461044b57600080fd5b806325829410116101bd5780634b8a35291161018c57806359eef8ce1161017157806359eef8ce146103c057806367e4ac2c146103d357806374004e92146103e857600080fd5b80634b8a35291461039a5780635137bf16146103ad57600080fd5b806325829410146102fb57806338a631831461033d5780634a6c983b1461035d5780634b2adf171461037357600080fd5b80631810fe7f116101f95780631810fe7f146102b05780631ed760b4146102cd5780631f211405146102e057806322867d78146102e857600080fd5b8063032ef9011461022b57806307f184f114610240578063097b144e14610253578063101d168414610266575b600080fd5b61023e610239366004612b14565b61054b565b005b61023e61024e366004612b5a565b6105fa565b61023e610261366004612b77565b610732565b6006546102869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546102bd9060ff1681565b60405190151581526020016102a7565b61023e6102db366004612bb8565b6107ff565b61023e610854565b61023e6102f6366004612bb8565b610973565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b6040516102a79190612c52565b6000546102869073ffffffffffffffffffffffffffffffffffffffff1681565b61033061036b366004612c65565b606092915050565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61023e6103a8366004612bb8565b610ac7565b61023e6103bb366004612d23565b610ce2565b61023e6103ce366004612b5a565b610de5565b6103db6110b4565b6040516102a79190612d65565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61042261041d366004612b5a565b611123565b6040519081526020016102a7565b61023e6112c9565b61023e610446366004612bb8565b611409565b610453611539565b6040516102a79190612dbf565b61042261046e366004612b5a565b611548565b61023e610481366004612b77565b611803565b61023e610494366004612e24565b6118f4565b6001546102869073ffffffffffffffffffffffffffffffffffffffff1681565b610453611af3565b6102866104cf366004612e79565b611d8d565b61023e6104e2366004612b5a565b611dc4565b6102bd6104f5366004612ec7565b600260209081526000928352604080842090915290825290205460ff1681565b61023e610523366004612efc565b611f09565b610330611fb7565b610453612045565b61023e610546366004612c65565b6120c7565b60005473ffffffffffffffffffffffffffffffffffffffff16331461059c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461064b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610698576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610760336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610796576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107a1838383612278565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610850576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff1633146108a5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036108f6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b6109a1336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b6109d7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065460405182815273ffffffffffffffffffffffffffffffffffffffff918216918416907f5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a5942319060200160405180910390a2610a34838284612278565b6040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052306044830152821690635ceae9c490606401600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50505050505050565b610af5336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610b2b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152336024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b158015610bc157600080fd5b505af1158015610bd5573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a3675082604051610c2191815260200190565b60405180910390a26006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690636c665a55906064015b600060405180830381600087803b158015610cc657600080fd5b505af1158015610cda573d6000803e3d6000fd5b505050505050565b610d10336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610d46576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d5260076000612a07565b8060005b81811015610db3576007848483818110610d7257610d72612f5f565b835460018101855560009485526020909420604090910292909201926002029091019050610da08282612f8e565b505080610dac90613015565b9050610d56565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b383836040516107f292919061304d565b610e13336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610e49576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e96576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a2600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015610f70573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb691908101906130e2565b9050610ff260408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b60405160200161100291906131a2565b604051602081830303815290604052805190602001208160405160200161102991906131a2565b604051602081830303815290604052805190602001201461085057604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c1480000000000000000000000000000000000000000000000000000000081526110ab919083906004016131be565b60405180910390fd5b6060600880548060200260200160405190810160405280929190818152602001828054801561111957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116110ee575b5050505050905090565b6000611153336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611189576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff166111cd83827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612278565b6040517f1b8222ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152306024830152821690631b8222ec906044016020604051808303816000875af1158015611241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126591906131ec565b915061127383826000612278565b8273ffffffffffffffffffffffffffffffffffffffff167f5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a594231836040516112bb91815260200190565b60405180910390a250919050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461131f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611370576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b611437336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b61146d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ae73ffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000083612362565b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161152d91815260200190565b60405180910390a35050565b6060611543611af3565b905090565b6000611578336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b6115ae576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040517f16a2d65900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301529091169081906316a2d65990604401602060405180830381865afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a91906131ec565b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152336024830152604482018390529193507f0000000000000000000000000000000000000000000000000000000000000000909116906357f597b790606401600060405180830381600087803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a367508360405161174591815260200190565b60405180910390a26040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000081166044830152821690636c665a5590606401600060405180830381600087803b1580156117e557600080fd5b505af11580156117f9573d6000803e3d6000fd5b5050505050919050565b611831336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611867576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516118c691815260200190565b60405180910390a36118ef73ffffffffffffffffffffffffffffffffffffffff84168383612362565b505050565b611922336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611958576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166119a5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610cda578484828181106119d8576119d8612f5f565b9050604002018036038101906119ee9190613205565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611aec81613015565b90506119be565b6008546060908067ffffffffffffffff811115611b1257611b126130b3565b604051908082528060200260200182016040528015611b5757816020015b6040805180820190915260008082526020820152815260200190600190039081611b305790505b50915060008060005b83811015611d865760088181548110611b7b57611b7b612f5f565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692508215611cf2576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3391906131ec565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301528516906370a0823190602401602060405180830381865afa158015611cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce391906131ec565b611ced9190613262565b611d2b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16315b915060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200183815250858281518110611d6a57611d6a612f5f565b602002602001018190525080611d7f90613015565b9050611b60565b5050505090565b60088181548110611d9d57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b611df2336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611e28576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611e75576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611f37336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611f6d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f7960088383612a2b565b507fe211f2a537da6de85cb2b19af2741698c6a50c256060eb84460bda0c6f0bb0278282604051611fab929190613275565b60405180910390a15050565b60058054611fc4906132d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611ff0906132d0565b801561203d5780601f106120125761010080835404028352916020019161203d565b820191906000526020600020905b81548152906001019060200180831161202057829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156120be5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101612069565b50505050905090565b6120f5336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b61212b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121358282612436565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb90602401610cac565b60035460009060ff16156121e6575060005473ffffffffffffffffffffffffffffffffffffffff838116911614612272565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480612261575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561226e57506001612272565b5060005b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156122ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230e91906131ec565b810361231957505050565b61233b73ffffffffffffffffffffffffffffffffffffffff8416836000612468565b80156118ef576118ef73ffffffffffffffffffffffffffffffffffffffff841683836125ea565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118ef9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126e9565b6040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158061250857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156124e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250691906131ec565b155b612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016110ab565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118ef9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016123b4565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612660573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268491906131ec565b90506126e3847f095ea7b300000000000000000000000000000000000000000000000000000000856126b68686613262565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064016123b4565b50505050565b600061274b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166127f89092919063ffffffff16565b905080516000148061276c57508080602001905181019061276c9190613323565b6118ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016110ab565b6060612807848460008561280f565b949350505050565b6060824710156128a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016110ab565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516128ca91906131a2565b60006040518083038185875af1925050503d8060008114612907576040519150601f19603f3d011682016040523d82523d6000602084013e61290c565b606091505b509150915061291d87838387612928565b979650505050505050565b606083156129be5782516000036129b75773ffffffffffffffffffffffffffffffffffffffff85163b6129b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016110ab565b5081612807565b61280783838151156129d35781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab9190612c52565b5080546000825560020290600052602060002090810190612a289190612ab3565b50565b828054828255906000526020600020908101928215612aa3579160200282015b82811115612aa35781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190612a4b565b50612aaf929150612af1565b5090565b5b80821115612aaf5780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201612ab4565b5b80821115612aaf5760008155600101612af2565b8015158114612a2857600080fd5b600060208284031215612b2657600080fd5b8135612b3181612b06565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114612a2857600080fd5b600060208284031215612b6c57600080fd5b8135612b3181612b38565b600080600060608486031215612b8c57600080fd5b8335612b9781612b38565b92506020840135612ba781612b38565b929592945050506040919091013590565b60008060408385031215612bcb57600080fd5b8235612bd681612b38565b946020939093013593505050565b60005b83811015612bff578181015183820152602001612be7565b50506000910152565b60008151808452612c20816020860160208601612be4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612b316020830184612c08565b60008060208385031215612c7857600080fd5b823567ffffffffffffffff80821115612c9057600080fd5b818501915085601f830112612ca457600080fd5b813581811115612cb357600080fd5b866020828501011115612cc557600080fd5b60209290920196919550909350505050565b60008083601f840112612ce957600080fd5b50813567ffffffffffffffff811115612d0157600080fd5b6020830191508360208260061b8501011115612d1c57600080fd5b9250929050565b60008060208385031215612d3657600080fd5b823567ffffffffffffffff811115612d4d57600080fd5b612d5985828601612cd7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015612db357835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612d81565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612e17578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612ddc565b5091979650505050505050565b600080600060408486031215612e3957600080fd5b8335612e4481612b38565b9250602084013567ffffffffffffffff811115612e6057600080fd5b612e6c86828701612cd7565b9497909650939450505050565b600060208284031215612e8b57600080fd5b5035919050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612ec257600080fd5b919050565b60008060408385031215612eda57600080fd5b8235612ee581612b38565b9150612ef360208401612e92565b90509250929050565b60008060208385031215612f0f57600080fd5b823567ffffffffffffffff80821115612f2757600080fd5b818501915085601f830112612f3b57600080fd5b813581811115612f4a57600080fd5b8660208260051b8501011115612cc557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8135612f9981612b38565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304657613046612fe6565b5060010190565b6020808252818101839052600090604080840186845b878110156130a657813561307681612b38565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101613063565b5090979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156130f457600080fd5b815167ffffffffffffffff8082111561310c57600080fd5b818401915084601f83011261312057600080fd5b815181811115613132576131326130b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613178576131786130b3565b8160405282815287602084870101111561319157600080fd5b61291d836020830160208801612be4565b600082516131b4818460208701612be4565b9190910192915050565b6040815260006131d16040830185612c08565b82810360208401526131e38185612c08565b95945050505050565b6000602082840312156131fe57600080fd5b5051919050565b60006040828403121561321757600080fd5b6040516040810181811067ffffffffffffffff8211171561323a5761323a6130b3565b60405261324683612e92565b8152602083013561325681612b06565b60208201529392505050565b8082018082111561227257612272612fe6565b60208082528181018390526000908460408401835b868110156132c557823561329d81612b38565b73ffffffffffffffffffffffffffffffffffffffff168252918301919083019060010161328a565b509695505050505050565b600181811c908216806132e457607f821691505b60208210810361331d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561333557600080fd5b8151612b3181612b0656fea26469706673582212208f76a400b178910f532338f11e947b2b72891305b129f6a735395133675dbac864736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102265760003560e01c80637c27383b1161012a578063c34c08e5116100bd578063daeccc791161008c578063e173ad2511610071578063e173ad2514610528578063e321453414610530578063e337e11d1461053857600080fd5b8063daeccc79146104e7578063de2176251461051557600080fd5b8063c34c08e514610499578063ce5c715a146104b9578063cf35bdd0146104c1578063d9a349c1146104d457600080fd5b80639bd5c7c5116100f95780639bd5c7c514610460578063a25db5e2146102fb578063a7229fd914610473578063bfccf0ec1461048657600080fd5b80637c27383b1461040f5780638112c4af146104305780638e0aa54a146104385780638fece34b1461044b57600080fd5b806325829410116101bd5780634b8a35291161018c57806359eef8ce1161017157806359eef8ce146103c057806367e4ac2c146103d357806374004e92146103e857600080fd5b80634b8a35291461039a5780635137bf16146103ad57600080fd5b806325829410146102fb57806338a631831461033d5780634a6c983b1461035d5780634b2adf171461037357600080fd5b80631810fe7f116101f95780631810fe7f146102b05780631ed760b4146102cd5780631f211405146102e057806322867d78146102e857600080fd5b8063032ef9011461022b57806307f184f114610240578063097b144e14610253578063101d168414610266575b600080fd5b61023e610239366004612b14565b61054b565b005b61023e61024e366004612b5a565b6105fa565b61023e610261366004612b77565b610732565b6006546102869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546102bd9060ff1681565b60405190151581526020016102a7565b61023e6102db366004612bb8565b6107ff565b61023e610854565b61023e6102f6366004612bb8565b610973565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b6040516102a79190612c52565b6000546102869073ffffffffffffffffffffffffffffffffffffffff1681565b61033061036b366004612c65565b606092915050565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61023e6103a8366004612bb8565b610ac7565b61023e6103bb366004612d23565b610ce2565b61023e6103ce366004612b5a565b610de5565b6103db6110b4565b6040516102a79190612d65565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61042261041d366004612b5a565b611123565b6040519081526020016102a7565b61023e6112c9565b61023e610446366004612bb8565b611409565b610453611539565b6040516102a79190612dbf565b61042261046e366004612b5a565b611548565b61023e610481366004612b77565b611803565b61023e610494366004612e24565b6118f4565b6001546102869073ffffffffffffffffffffffffffffffffffffffff1681565b610453611af3565b6102866104cf366004612e79565b611d8d565b61023e6104e2366004612b5a565b611dc4565b6102bd6104f5366004612ec7565b600260209081526000928352604080842090915290825290205460ff1681565b61023e610523366004612efc565b611f09565b610330611fb7565b610453612045565b61023e610546366004612c65565b6120c7565b60005473ffffffffffffffffffffffffffffffffffffffff16331461059c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461064b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610698576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610760336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610796576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107a1838383612278565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610850576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff1633146108a5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036108f6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b6109a1336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b6109d7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065460405182815273ffffffffffffffffffffffffffffffffffffffff918216918416907f5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a5942319060200160405180910390a2610a34838284612278565b6040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052306044830152821690635ceae9c490606401600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50505050505050565b610af5336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610b2b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152336024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b158015610bc157600080fd5b505af1158015610bd5573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a3675082604051610c2191815260200190565b60405180910390a26006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690636c665a55906064015b600060405180830381600087803b158015610cc657600080fd5b505af1158015610cda573d6000803e3d6000fd5b505050505050565b610d10336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610d46576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d5260076000612a07565b8060005b81811015610db3576007848483818110610d7257610d72612f5f565b835460018101855560009485526020909420604090910292909201926002029091019050610da08282612f8e565b505080610dac90613015565b9050610d56565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b383836040516107f292919061304d565b610e13336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610e49576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e96576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a2600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015610f70573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb691908101906130e2565b9050610ff260408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b60405160200161100291906131a2565b604051602081830303815290604052805190602001208160405160200161102991906131a2565b604051602081830303815290604052805190602001201461085057604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c1480000000000000000000000000000000000000000000000000000000081526110ab919083906004016131be565b60405180910390fd5b6060600880548060200260200160405190810160405280929190818152602001828054801561111957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116110ee575b5050505050905090565b6000611153336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611189576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff166111cd83827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612278565b6040517f1b8222ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152306024830152821690631b8222ec906044016020604051808303816000875af1158015611241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126591906131ec565b915061127383826000612278565b8273ffffffffffffffffffffffffffffffffffffffff167f5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a594231836040516112bb91815260200190565b60405180910390a250919050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461131f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611370576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b611437336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b61146d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ae73ffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000083612362565b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161152d91815260200190565b60405180910390a35050565b6060611543611af3565b905090565b6000611578336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b6115ae576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040517f16a2d65900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301529091169081906316a2d65990604401602060405180830381865afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a91906131ec565b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152336024830152604482018390529193507f0000000000000000000000000000000000000000000000000000000000000000909116906357f597b790606401600060405180830381600087803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a367508360405161174591815260200190565b60405180910390a26040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000081166044830152821690636c665a5590606401600060405180830381600087803b1580156117e557600080fd5b505af11580156117f9573d6000803e3d6000fd5b5050505050919050565b611831336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611867576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516118c691815260200190565b60405180910390a36118ef73ffffffffffffffffffffffffffffffffffffffff84168383612362565b505050565b611922336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611958576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166119a5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610cda578484828181106119d8576119d8612f5f565b9050604002018036038101906119ee9190613205565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611aec81613015565b90506119be565b6008546060908067ffffffffffffffff811115611b1257611b126130b3565b604051908082528060200260200182016040528015611b5757816020015b6040805180820190915260008082526020820152815260200190600190039081611b305790505b50915060008060005b83811015611d865760088181548110611b7b57611b7b612f5f565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692508215611cf2576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3391906131ec565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301528516906370a0823190602401602060405180830381865afa158015611cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce391906131ec565b611ced9190613262565b611d2b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16315b915060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200183815250858281518110611d6a57611d6a612f5f565b602002602001018190525080611d7f90613015565b9050611b60565b5050505090565b60088181548110611d9d57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b611df2336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611e28576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611e75576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611f37336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611f6d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f7960088383612a2b565b507fe211f2a537da6de85cb2b19af2741698c6a50c256060eb84460bda0c6f0bb0278282604051611fab929190613275565b60405180910390a15050565b60058054611fc4906132d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611ff0906132d0565b801561203d5780601f106120125761010080835404028352916020019161203d565b820191906000526020600020905b81548152906001019060200180831161202057829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156120be5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101612069565b50505050905090565b6120f5336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b61212b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121358282612436565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb90602401610cac565b60035460009060ff16156121e6575060005473ffffffffffffffffffffffffffffffffffffffff838116911614612272565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480612261575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561226e57506001612272565b5060005b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156122ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230e91906131ec565b810361231957505050565b61233b73ffffffffffffffffffffffffffffffffffffffff8416836000612468565b80156118ef576118ef73ffffffffffffffffffffffffffffffffffffffff841683836125ea565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118ef9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126e9565b6040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158061250857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156124e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250691906131ec565b155b612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016110ab565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118ef9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016123b4565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612660573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268491906131ec565b90506126e3847f095ea7b300000000000000000000000000000000000000000000000000000000856126b68686613262565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064016123b4565b50505050565b600061274b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166127f89092919063ffffffff16565b905080516000148061276c57508080602001905181019061276c9190613323565b6118ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016110ab565b6060612807848460008561280f565b949350505050565b6060824710156128a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016110ab565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516128ca91906131a2565b60006040518083038185875af1925050503d8060008114612907576040519150601f19603f3d011682016040523d82523d6000602084013e61290c565b606091505b509150915061291d87838387612928565b979650505050505050565b606083156129be5782516000036129b75773ffffffffffffffffffffffffffffffffffffffff85163b6129b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016110ab565b5081612807565b61280783838151156129d35781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab9190612c52565b5080546000825560020290600052602060002090810190612a289190612ab3565b50565b828054828255906000526020600020908101928215612aa3579160200282015b82811115612aa35781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190612a4b565b50612aaf929150612af1565b5090565b5b80821115612aaf5780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201612ab4565b5b80821115612aaf5760008155600101612af2565b8015158114612a2857600080fd5b600060208284031215612b2657600080fd5b8135612b3181612b06565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114612a2857600080fd5b600060208284031215612b6c57600080fd5b8135612b3181612b38565b600080600060608486031215612b8c57600080fd5b8335612b9781612b38565b92506020840135612ba781612b38565b929592945050506040919091013590565b60008060408385031215612bcb57600080fd5b8235612bd681612b38565b946020939093013593505050565b60005b83811015612bff578181015183820152602001612be7565b50506000910152565b60008151808452612c20816020860160208601612be4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612b316020830184612c08565b60008060208385031215612c7857600080fd5b823567ffffffffffffffff80821115612c9057600080fd5b818501915085601f830112612ca457600080fd5b813581811115612cb357600080fd5b866020828501011115612cc557600080fd5b60209290920196919550909350505050565b60008083601f840112612ce957600080fd5b50813567ffffffffffffffff811115612d0157600080fd5b6020830191508360208260061b8501011115612d1c57600080fd5b9250929050565b60008060208385031215612d3657600080fd5b823567ffffffffffffffff811115612d4d57600080fd5b612d5985828601612cd7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015612db357835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612d81565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612e17578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612ddc565b5091979650505050505050565b600080600060408486031215612e3957600080fd5b8335612e4481612b38565b9250602084013567ffffffffffffffff811115612e6057600080fd5b612e6c86828701612cd7565b9497909650939450505050565b600060208284031215612e8b57600080fd5b5035919050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612ec257600080fd5b919050565b60008060408385031215612eda57600080fd5b8235612ee581612b38565b9150612ef360208401612e92565b90509250929050565b60008060208385031215612f0f57600080fd5b823567ffffffffffffffff80821115612f2757600080fd5b818501915085601f830112612f3b57600080fd5b813581811115612f4a57600080fd5b8660208260051b8501011115612cc557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8135612f9981612b38565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304657613046612fe6565b5060010190565b6020808252818101839052600090604080840186845b878110156130a657813561307681612b38565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101613063565b5090979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156130f457600080fd5b815167ffffffffffffffff8082111561310c57600080fd5b818401915084601f83011261312057600080fd5b815181811115613132576131326130b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613178576131786130b3565b8160405282815287602084870101111561319157600080fd5b61291d836020830160208801612be4565b600082516131b4818460208701612be4565b9190910192915050565b6040815260006131d16040830185612c08565b82810360208401526131e38185612c08565b95945050505050565b6000602082840312156131fe57600080fd5b5051919050565b60006040828403121561321757600080fd5b6040516040810181811067ffffffffffffffff8211171561323a5761323a6130b3565b60405261324683612e92565b8152602083013561325681612b06565b60208201529392505050565b8082018082111561227257612272612fe6565b60208082528181018390526000908460408401835b868110156132c557823561329d81612b38565b73ffffffffffffffffffffffffffffffffffffffff168252918301919083019060010161328a565b509695505050505050565b600181811c908216806132e457607f821691505b60208210810361331d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561333557600080fd5b8151612b3181612b0656fea26469706673582212208f76a400b178910f532338f11e947b2b72891305b129f6a735395133675dbac864736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/strategies/RamosStrategy.sol/RamosStrategy.json b/apps/dapp/abi/contracts/v2/strategies/RamosStrategy.sol/RamosStrategy.json new file mode 100644 index 000000000..49746f336 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/strategies/RamosStrategy.sol/RamosStrategy.json @@ -0,0 +1,1125 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RamosStrategy", + "sourceName": "contracts/v2/strategies/RamosStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "string", + "name": "_strategyName", + "type": "string" + }, + { + "internalType": "address", + "name": "_treasuryReservesVault", + "type": "address" + }, + { + "internalType": "address", + "name": "_ramos", + "type": "address" + }, + { + "internalType": "address", + "name": "_templeToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_quoteToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_circuitBreakerProxy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "expected", + "type": "string" + }, + { + "internalType": "string", + "name": "actual", + "type": "string" + } + ], + "name": "InvalidVersion", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "OnlyTreasuryReserveVault", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptTokensStaked", + "type": "uint256" + } + ], + "name": "AddLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "name": "AssetBalancesCheckpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "BorrowToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "ManualAdjustmentsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "quoteTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bptIn", + "type": "uint256" + } + ], + "name": "RemoveLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RepayToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Shutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenAllowanceSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trv", + "type": "address" + } + ], + "name": "TreasuryReservesVaultSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.JoinPoolRequest", + "name": "_requestData", + "type": "tuple" + } + ], + "name": "addLiquidity", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "name": "automatedShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrowProtocolToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrowQuoteToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "circuitBreakerProxy", + "outputs": [ + { + "internalType": "contract ITempleCircuitBreakerProxy", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "debtCeilingUpdated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manualAdjustments", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "populateParamsData", + "type": "bytes" + } + ], + "name": "populateShutdownData", + "outputs": [ + { + "internalType": "bytes", + "name": "shutdownData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_quoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_slippageBps", + "type": "uint256" + } + ], + "name": "proportionalAddLiquidityQuote", + "outputs": [ + { + "internalType": "uint256", + "name": "templeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedBptAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBptAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.JoinPoolRequest", + "name": "requestData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_bptAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_slippageBps", + "type": "uint256" + } + ], + "name": "proportionalRemoveLiquidityQuote", + "outputs": [ + { + "internalType": "uint256", + "name": "expectedTempleAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedQuoteTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minTempleAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minQuoteTokenAmount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.ExitPoolRequest", + "name": "requestData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "quoteToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ramos", + "outputs": [ + { + "internalType": "contract IRamos", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IBalancerVault.ExitPoolRequest", + "name": "_requestData", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "_bptAmount", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "repayProtocolToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "repayQuoteToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "setManualAdjustments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setTokenAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trv", + "type": "address" + } + ], + "name": "setTreasuryReservesVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract ITempleERC20Token", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6101006040523480156200001257600080fd5b50604051620050c8380380620050c883398101604081905262000035916200073c565b8787878783836001600160a01b038216620000635760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166200008b5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000be5760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556005620000f8838262000908565b50600680546001600160a01b0319166001600160a01b0392831617905587811660805286811660a05285811660c052841660e052506200013e915060009050866200014c565b505050505050505062000a94565b60c0516200015c90838362000170565b60a0516200016c90838362000170565b5050565b6001600160a01b038216156200018e576200018e83836000620001a2565b6200019d8382600019620001a2565b505050565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002159190620009d4565b81036200022157505050565b620002386001600160a01b03841683600062000255565b80156200019d576200019d6001600160a01b0384168383620003b1565b801580620002d35750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d19190620009d4565b155b6200034b5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b6040516001600160a01b0383166024820152604481018290526200019d90849063095ea7b360e01b906064015b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052906200046b16565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801562000402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004289190620009d4565b9050620004658463095ea7b360e01b85620004448686620009ee565b6040516001600160a01b039092166024830152604482015260640162000378565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490820152600090620004ba906001600160a01b0385169084906200053f565b9050805160001480620004de575080806020019051810190620004de919062000a16565b6200019d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000342565b606062000550848460008562000558565b949350505050565b606082471015620005bb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000342565b600080866001600160a01b03168587604051620005d9919062000a41565b60006040518083038185875af1925050503d806000811462000618576040519150601f19603f3d011682016040523d82523d6000602084013e6200061d565b606091505b50909250905062000631878383876200063c565b979650505050505050565b60608315620006b0578251600003620006a8576001600160a01b0385163b620006a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000342565b508162000550565b620005508383815115620006c75781518083602001fd5b8060405162461bcd60e51b815260040162000342919062000a5f565b80516001600160a01b0381168114620006fb57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200073357818101518382015260200162000719565b50506000910152565b600080600080600080600080610100898b0312156200075a57600080fd5b6200076589620006e3565b97506200077560208a01620006e3565b60408a01519097506001600160401b03808211156200079357600080fd5b818b0191508b601f830112620007a857600080fd5b815181811115620007bd57620007bd62000700565b604051601f8201601f19908116603f01168101908382118183101715620007e857620007e862000700565b816040528281528e60208487010111156200080257600080fd5b6200081583602083016020880162000716565b809a5050505050506200082b60608a01620006e3565b94506200083b60808a01620006e3565b93506200084b60a08a01620006e3565b92506200085b60c08a01620006e3565b91506200086b60e08a01620006e3565b90509295985092959890939650565b600181811c908216806200088f57607f821691505b602082108103620008b057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200019d57600081815260208120601f850160051c81016020861015620008df5750805b601f850160051c820191505b818110156200090057828155600101620008eb565b505050505050565b81516001600160401b0381111562000924576200092462000700565b6200093c816200093584546200087a565b84620008b6565b602080601f8311600181146200097457600084156200095b5750858301515b600019600386901b1c1916600185901b17855562000900565b600085815260208120601f198616915b82811015620009a55788860151825594840194600190910190840162000984565b5085821015620009c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009e757600080fd5b5051919050565b8082018082111562000a1057634e487b7160e01b600052601160045260246000fd5b92915050565b60006020828403121562000a2957600080fd5b8151801515811462000a3a57600080fd5b9392505050565b6000825162000a5581846020870162000716565b9190910192915050565b602081526000825180602084015262000a8081604085016020870162000716565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161452f62000b996000396000818161040c01528181610ce001526119b8015260008181610336015281816116bc01528181611744015281816117ac0152818161198301528181611a1601528181611ac401528181611df2015281816128c001528181612a660152612b2e0152600081816104f801528181610863015281816108eb0152818161095301528181610cab01528181610d3e01528181610dec01528181611e5b015281816128eb01528181612bd20152612c9a01526000818161039f01528181610eb3015281816113ae01528181611d1101528181611f25015281816120420152818161254b01526129bc015261452f6000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80638112c4af11610145578063ce5c715a116100bd578063daeccc791161008c578063e321453411610071578063e3214534146105e8578063e337e11d146105f0578063e779ae7e1461060357600080fd5b8063daeccc79146105b2578063e173ad25146105e057600080fd5b8063ce5c715a14610560578063d3a6f47214610568578063d7fc90ea1461057b578063d9a349c11461059f57600080fd5b8063a7229fd911610114578063b926f2c2116100f9578063b926f2c21461051a578063bfccf0ec1461052d578063c34c08e51461054057600080fd5b8063a7229fd9146104e0578063b1a9069c146104f357600080fd5b80638112c4af146104775780638fece34b1461047f578063a25db5e214610494578063a2736b82146104cd57600080fd5b806325829410116101d85780634a6c983b116101a75780635137bf161161018c5780635137bf161461042e57806359eef8ce146104415780637908f4981461045457600080fd5b80634a6c983b146103f45780634b2adf171461040757600080fd5b806325829410146103585780632769d9ff1461039a57806327a06a29146103c157806338a63183146103d457600080fd5b8063101d16841161022f5780631ed760b4116102145780631ed760b4146103165780631f21140514610329578063217a4b701461033157600080fd5b8063101d1684146102af5780631810fe7f146102f957600080fd5b8063032ef9011461026157806307f184f114610276578063082f21eb14610289578063097b144e1461029c575b600080fd5b61027461026f366004613387565b610616565b005b6102746102843660046133c6565b6106c5565b6102746102973660046133e3565b6107fd565b6102746102aa3660046133fc565b6109c9565b6006546102cf9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546103069060ff1681565b60405190151581526020016102f0565b61027461032436600461343d565b610a96565b610274610aeb565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b6040516102f091906134d7565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b6102746103cf3660046134ea565b610c0a565b6000546102cf9073ffffffffffffffffffffffffffffffffffffffff1681565b61038d61040236600461351a565b610e65565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b61027461043c3660046135d8565b610f85565b61027461044f3660046133c6565b611088565b61046761046236600461361a565b61137a565b6040516102f0949392919061371b565b610274611507565b610487611647565b6040516102f0919061374a565b60408051808201909152600581527f312e302e31000000000000000000000000000000000000000000000000000000602082015261038d565b6102746104db3660046133e3565b611656565b6102746104ee3660046133fc565b6117f1565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b6102746105283660046134ea565b6118e2565b61027461053b3660046137af565b611b0b565b6001546102cf9073ffffffffffffffffffffffffffffffffffffffff1681565b610487611d0a565b61027461057636600461381c565b611ebc565b61058e61058936600461361a565b61200d565b6040516102f0959493929190613861565b6102746105ad3660046133c6565b61219e565b6103066105c03660046138c7565b600260209081526000928352604080842090915290825290205460ff1681565b61038d6122e3565b610487612371565b6102746105fe36600461351a565b6123f3565b6102746106113660046138fc565b6124e0565b60005473ffffffffffffffffffffffffffffffffffffffff163314610667576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610716576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610763576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61082b336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b610861576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fe6860fe3ccf5242864f07e485b5e63c2777d82f69ef809696a0400a4aed83d9e826040516108c991815260200190565b60405180910390a261091373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163330846126ef565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c4906064015b600060405180830381600087803b1580156109ae57600080fd5b505af11580156109c2573d6000803e3d6000fd5b5050505050565b6109f7336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b610a2d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a388383836127d1565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610ae7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff163314610b3c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610b8d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610c38336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b610c6e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152336024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b158015610d2457600080fd5b505af1158015610d38573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f0c8eaae01b888a7947a480c4c088bea47ce266f4c758a8bf534398c130a6d35d83604051610da491815260200190565b60405180910390a26006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052838116604483015290911690636c665a55906064015b600060405180830381600087803b158015610e4957600080fd5b505af1158015610e5d573d6000803e3d6000fd5b505050505050565b60606000610e75838501856139fb565b9050610eb16040805160c08101825260609181018281528282018390526080820192909252600060a08201529081908152602001600081525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ba5b79826040518163ffffffff1660e01b8152600401606060405180830381865afa158015610f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f409190613a3d565b5050602082018190528251610f55919061200d565b85525050604051610f6c9250839150602001613a6b565b6040516020818303038152906040529250505092915050565b610fb3336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b610fe9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff560076000613303565b8060005b8181101561105657600784848381811061101557611015613a9d565b8354600181018555600094855260209094206040909102929092019260020290910190506110438282613acc565b50508061104f90613b53565b9050610ff9565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b38383604051610a89929190613b8b565b6110b6336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b6110ec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611139576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a260065461119d9073ffffffffffffffffffffffffffffffffffffffff16826128bb565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015611236573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261127c9190810190613c6c565b90506112b860408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b6040516020016112c89190613cb5565b60405160208183030381529060405280519060200120816040516020016112ef9190613cb5565b6040516020818303038152906040528051906020012014610ae757604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c14800000000000000000000000000000000000000000000000000000000815261137191908390600401613cd1565b60405180910390fd5b60008060006113ac60405180608001604052806060815260200160608152602001606081526020016000151581525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355ac8d306040518163ffffffff1660e01b8152600401602060405180830381865afa158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190613cff565b6040517f7908f498000000000000000000000000000000000000000000000000000000008152600481018890526024810187905273ffffffffffffffffffffffffffffffffffffffff9190911690637908f498906044016000604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114f79190810190613ed4565b9299919850965090945092505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461155d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036115ae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060611651611d0a565b905090565b611684336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b6116ba576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fe6860fe3ccf5242864f07e485b5e63c2777d82f69ef809696a0400a4aed83d9e8260405161172291815260200190565b60405180910390a261176c73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163330846126ef565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c490606401610994565b61181f336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b611855576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516118b491815260200190565b60405180910390a36118dd73ffffffffffffffffffffffffffffffffffffffff84168383612911565b505050565b611910336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b611946576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152336024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b1580156119fc57600080fd5b505af1158015611a10573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f0c8eaae01b888a7947a480c4c088bea47ce266f4c758a8bf534398c130a6d35d83604051611a7c91815260200190565b60405180910390a26006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052838116604483015290911690636c665a5590606401610e2f565b611b39336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b611b6f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bbc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610e5d57848482818110611bef57611bef613a9d565b905060400201803603810190611c059190613f2e565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611d0381613b53565b9050611bd5565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ba5b79826040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9e9190613a3d565b60408051600280825260608201909252929550909350909150816020015b6040805180820190915260008082526020820152815260200190600190039081611dbc57905050925060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018281525083600081518110611e4357611e43613a9d565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018381525083600181518110611eac57611eac613a9d565b6020026020010181905250505090565b611eea336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b611f20576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3a6f47285856040518363ffffffff1660e01b8152600401611f7e929190614191565b60408051808303816000875af1158015611f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc091906141b3565b604080518381526020810183905290810186905291935091507f462ff1f90b66e3549a190bb471a2276749250543bad2ce9c21f706d882a59dad906060015b60405180910390a150505050565b60008060008061204060405180608001604052806060815260200160608152602001606081526020016000151581525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355ac8d306040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cf9190613cff565b6040517fd7fc90ea000000000000000000000000000000000000000000000000000000008152600481018990526024810188905273ffffffffffffffffffffffffffffffffffffffff919091169063d7fc90ea906044016000604051808303816000875af1158015612145573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261218b91908101906141d7565b939b929a50909850965090945092505050565b6121cc336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b612202576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661224f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600580546122f09061423b565b80601f016020809104026020016040519081016040528092919081815260200182805461231c9061423b565b80156123695780601f1061233e57610100808354040283529160200191612369565b820191906000526020600020905b81548152906001019060200180831161234c57829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156123ea5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101612395565b50505050905090565b612421336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b612457576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124618282612967565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb90602401610e2f565b61250e336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b612544576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e779ae7e856040518263ffffffff1660e01b81526004016125a29190614288565b6060604051808303816000875af11580156125c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e59190613a3d565b604080518481526020810184905290810182905292955090935091507ff75993dbe1645872cbbea6395e1feebee76b435baf0e4d62d7eac269c6f57b2490606001611fff565b60035460009060ff161561265d575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146126e9565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806126d8575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156126e5575060016126e9565b5060005b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526127cb9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612d13565b50505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612867919061429b565b810361287257505050565b61289473ffffffffffffffffffffffffffffffffffffffff8416836000612e22565b80156118dd576118dd73ffffffffffffffffffffffffffffffffffffffff84168383612fa4565b6128e67f0000000000000000000000000000000000000000000000000000000000000000838361309d565b610ae77f0000000000000000000000000000000000000000000000000000000000000000838361309d565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118dd9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612749565b600061297582840184614360565b805160208201516040517fd3a6f47200000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263d3a6f472926129f19290916004016144b6565b60408051808303816000875af1158015612a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3391906141b3565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae6919061429b565b90508015612ba1576006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c490606401600060405180830381600087803b158015612b8857600080fd5b505af1158015612b9c573d6000803e3d6000fd5b505050505b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c52919061429b565b905080156109c2576006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c490606401600060405180830381600087803b158015612cf457600080fd5b505af1158015612d08573d6000803e3d6000fd5b505050505050505050565b6000612d75826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130f09092919063ffffffff16565b9050805160001480612d96575080806020019051810190612d9691906144c9565b6118dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611371565b801580612ec257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec0919061429b565b155b612f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401611371565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118dd9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612749565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561301a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303e919061429b565b90506127cb847f095ea7b3000000000000000000000000000000000000000000000000000000008561307086866144e6565b60405173ffffffffffffffffffffffffffffffffffffffff90921660248301526044820152606401612749565b73ffffffffffffffffffffffffffffffffffffffff8216156130c5576130c5838360006127d1565b6118dd83827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127d1565b60606130ff8484600085613109565b90505b9392505050565b60608247101561319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611371565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516131c49190613cb5565b60006040518083038185875af1925050503d8060008114613201576040519150601f19603f3d011682016040523d82523d6000602084013e613206565b606091505b509150915061321787838387613224565b925050505b949350505050565b606083156132ba5782516000036132b35773ffffffffffffffffffffffffffffffffffffffff85163b6132b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611371565b508161321c565b61321c83838151156132cf5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137191906134d7565b50805460008255600202906000526020600020908101906133249190613327565b50565b5b808211156133655780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201613328565b5090565b801515811461332457600080fd5b803561338281613369565b919050565b60006020828403121561339957600080fd5b813561310281613369565b73ffffffffffffffffffffffffffffffffffffffff8116811461332457600080fd5b6000602082840312156133d857600080fd5b8135613102816133a4565b6000602082840312156133f557600080fd5b5035919050565b60008060006060848603121561341157600080fd5b833561341c816133a4565b9250602084013561342c816133a4565b929592945050506040919091013590565b6000806040838503121561345057600080fd5b823561345b816133a4565b946020939093013593505050565b60005b8381101561348457818101518382015260200161346c565b50506000910152565b600081518084526134a5816020860160208601613469565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000613102602083018461348d565b600080604083850312156134fd57600080fd5b82359150602083013561350f816133a4565b809150509250929050565b6000806020838503121561352d57600080fd5b823567ffffffffffffffff8082111561354557600080fd5b818501915085601f83011261355957600080fd5b81358181111561356857600080fd5b86602082850101111561357a57600080fd5b60209290920196919550909350505050565b60008083601f84011261359e57600080fd5b50813567ffffffffffffffff8111156135b657600080fd5b6020830191508360208260061b85010111156135d157600080fd5b9250929050565b600080602083850312156135eb57600080fd5b823567ffffffffffffffff81111561360257600080fd5b61360e8582860161358c565b90969095509350505050565b6000806040838503121561362d57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101561366c57815187529582019590820190600101613650565b509495945050505050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156136c957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613697565b5050828501519150858103838701526136e2818361363c565b92505050604083015184820360408601526136fd828261348d565b9150506060830151613713606086018215159052565b509392505050565b8481528360208201528260408201526080606082015260006137406080830184613677565b9695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156137a2578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613767565b5091979650505050505050565b6000806000604084860312156137c457600080fd5b83356137cf816133a4565b9250602084013567ffffffffffffffff8111156137eb57600080fd5b6137f78682870161358c565b9497909650939450505050565b60006080828403121561381657600080fd5b50919050565b6000806040838503121561382f57600080fd5b823567ffffffffffffffff81111561384657600080fd5b61385285828601613804565b95602094909401359450505050565b85815284602082015283604082015282606082015260a06080820152600061388c60a0830184613677565b979650505050505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461338257600080fd5b600080604083850312156138da57600080fd5b82356138e5816133a4565b91506138f360208401613897565b90509250929050565b60006020828403121561390e57600080fd5b813567ffffffffffffffff81111561392557600080fd5b61321c84828501613804565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561398357613983613931565b60405290565b6040805190810167ffffffffffffffff8111828210171561398357613983613931565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139f3576139f3613931565b604052919050565b600060208284031215613a0d57600080fd5b6040516020810181811067ffffffffffffffff82111715613a3057613a30613931565b6040529135825250919050565b600080600060608486031215613a5257600080fd5b8351925060208401519150604084015190509250925092565b602081526000825160406020840152613a876060840182613677565b9050602084015160408401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8135613ad7816133a4565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b8457613b84613b24565b5060010190565b6020808252818101839052600090604080840186845b87811015613be4578135613bb4816133a4565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101613ba1565b5090979650505050505050565b600067ffffffffffffffff821115613c0b57613c0b613931565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000613c4a613c4584613bf1565b6139ac565b9050828152838383011115613c5e57600080fd5b613102836020830184613469565b600060208284031215613c7e57600080fd5b815167ffffffffffffffff811115613c9557600080fd5b8201601f81018413613ca657600080fd5b61321c84825160208401613c37565b60008251613cc7818460208701613469565b9190910192915050565b604081526000613ce4604083018561348d565b8281036020840152613cf6818561348d565b95945050505050565b600060208284031215613d1157600080fd5b8151613102816133a4565b600067ffffffffffffffff821115613d3657613d36613931565b5060051b60200190565b600082601f830112613d5157600080fd5b81516020613d61613c4583613d1c565b82815260059290921b84018101918181019086841115613d8057600080fd5b8286015b84811015613d9b5780518352918301918301613d84565b509695505050505050565b600082601f830112613db757600080fd5b61310283835160208501613c37565b805161338281613369565b600060808284031215613de357600080fd5b613deb613960565b9050815167ffffffffffffffff80821115613e0557600080fd5b818401915084601f830112613e1957600080fd5b81516020613e29613c4583613d1c565b82815260059290921b84018101918181019088841115613e4857600080fd5b948201945b83861015613e6f578551613e60816133a4565b82529482019490820190613e4d565b86525085810151935082841115613e8557600080fd5b613e9187858801613d40565b90850152506040840151915080821115613eaa57600080fd5b50613eb784828501613da6565b604083015250613ec960608301613dc6565b606082015292915050565b60008060008060808587031215613eea57600080fd5b845193506020850151925060408501519150606085015167ffffffffffffffff811115613f1657600080fd5b613f2287828801613dd1565b91505092959194509250565b600060408284031215613f4057600080fd5b613f48613989565b613f5183613897565b81526020830135613f6181613369565b60208201529392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613fa257600080fd5b830160208101925035905067ffffffffffffffff811115613fc257600080fd5b8060051b36038213156135d157600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561400657600080fd5b8260051b80836020870137939093016020019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261405457600080fd5b830160208101925035905067ffffffffffffffff81111561407457600080fd5b8036038213156135d157600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000608083016140dc8384613f6d565b60808652918290529060009060a086015b8183101561412b578335614100816133a4565b73ffffffffffffffffffffffffffffffffffffffff16815260209384019360019390930192016140ed565b6141386020870187613f6d565b94509250868103602088015261414f818585613fd4565b9350505050614161604084018461401f565b8583036040870152614174838284614083565b9250505061418460608401613377565b8015156060860152613713565b6040815260006141a460408301856140cc565b90508260208301529392505050565b600080604083850312156141c657600080fd5b505080516020909101519092909150565b600080600080600060a086880312156141ef57600080fd5b85519450602086015193506040860151925060608601519150608086015167ffffffffffffffff81111561422257600080fd5b61422e88828901613dd1565b9150509295509295909350565b600181811c9082168061424f57607f821691505b602082108103613816577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60208152600061310260208301846140cc565b6000602082840312156142ad57600080fd5b5051919050565b600082601f8301126142c557600080fd5b813560206142d5613c4583613d1c565b82815260059290921b840181019181810190868411156142f457600080fd5b8286015b84811015613d9b57803583529183019183016142f8565b600082601f83011261432057600080fd5b813561432e613c4582613bf1565b81815284602083860101111561434357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561437357600080fd5b823567ffffffffffffffff8082111561438b57600080fd5b908401906040828703121561439f57600080fd5b6143a7613989565b8235828111156143b657600080fd5b8301608081890312156143c857600080fd5b6143d0613960565b8135848111156143df57600080fd5b8201601f81018a136143f057600080fd5b80356143fe613c4582613d1c565b81815260059190911b8201880190888101908c83111561441d57600080fd5b928901925b82841015614444578335614435816133a4565b82529289019290890190614422565b8452505050818601358481111561445a57600080fd5b6144668a8285016142b4565b878301525060408201358481111561447d57600080fd5b6144898a82850161430f565b60408301525061449b60608301613377565b60608201528252509183013592820192909252949350505050565b6040815260006141a46040830185613677565b6000602082840312156144db57600080fd5b815161310281613369565b808201808211156126e9576126e9613b2456fea2646970667358221220a4bda04c296f70ac5e2df484593643909bf540387c79d144878af25a4543206764736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061025c5760003560e01c80638112c4af11610145578063ce5c715a116100bd578063daeccc791161008c578063e321453411610071578063e3214534146105e8578063e337e11d146105f0578063e779ae7e1461060357600080fd5b8063daeccc79146105b2578063e173ad25146105e057600080fd5b8063ce5c715a14610560578063d3a6f47214610568578063d7fc90ea1461057b578063d9a349c11461059f57600080fd5b8063a7229fd911610114578063b926f2c2116100f9578063b926f2c21461051a578063bfccf0ec1461052d578063c34c08e51461054057600080fd5b8063a7229fd9146104e0578063b1a9069c146104f357600080fd5b80638112c4af146104775780638fece34b1461047f578063a25db5e214610494578063a2736b82146104cd57600080fd5b806325829410116101d85780634a6c983b116101a75780635137bf161161018c5780635137bf161461042e57806359eef8ce146104415780637908f4981461045457600080fd5b80634a6c983b146103f45780634b2adf171461040757600080fd5b806325829410146103585780632769d9ff1461039a57806327a06a29146103c157806338a63183146103d457600080fd5b8063101d16841161022f5780631ed760b4116102145780631ed760b4146103165780631f21140514610329578063217a4b701461033157600080fd5b8063101d1684146102af5780631810fe7f146102f957600080fd5b8063032ef9011461026157806307f184f114610276578063082f21eb14610289578063097b144e1461029c575b600080fd5b61027461026f366004613387565b610616565b005b6102746102843660046133c6565b6106c5565b6102746102973660046133e3565b6107fd565b6102746102aa3660046133fc565b6109c9565b6006546102cf9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546103069060ff1681565b60405190151581526020016102f0565b61027461032436600461343d565b610a96565b610274610aeb565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b6040516102f091906134d7565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b6102746103cf3660046134ea565b610c0a565b6000546102cf9073ffffffffffffffffffffffffffffffffffffffff1681565b61038d61040236600461351a565b610e65565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b61027461043c3660046135d8565b610f85565b61027461044f3660046133c6565b611088565b61046761046236600461361a565b61137a565b6040516102f0949392919061371b565b610274611507565b610487611647565b6040516102f0919061374a565b60408051808201909152600581527f312e302e31000000000000000000000000000000000000000000000000000000602082015261038d565b6102746104db3660046133e3565b611656565b6102746104ee3660046133fc565b6117f1565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b6102746105283660046134ea565b6118e2565b61027461053b3660046137af565b611b0b565b6001546102cf9073ffffffffffffffffffffffffffffffffffffffff1681565b610487611d0a565b61027461057636600461381c565b611ebc565b61058e61058936600461361a565b61200d565b6040516102f0959493929190613861565b6102746105ad3660046133c6565b61219e565b6103066105c03660046138c7565b600260209081526000928352604080842090915290825290205460ff1681565b61038d6122e3565b610487612371565b6102746105fe36600461351a565b6123f3565b6102746106113660046138fc565b6124e0565b60005473ffffffffffffffffffffffffffffffffffffffff163314610667576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610716576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610763576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61082b336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b610861576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fe6860fe3ccf5242864f07e485b5e63c2777d82f69ef809696a0400a4aed83d9e826040516108c991815260200190565b60405180910390a261091373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163330846126ef565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c4906064015b600060405180830381600087803b1580156109ae57600080fd5b505af11580156109c2573d6000803e3d6000fd5b5050505050565b6109f7336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b610a2d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a388383836127d1565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610ae7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff163314610b3c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610b8d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b610c38336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b610c6e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152336024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b158015610d2457600080fd5b505af1158015610d38573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f0c8eaae01b888a7947a480c4c088bea47ce266f4c758a8bf534398c130a6d35d83604051610da491815260200190565b60405180910390a26006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052838116604483015290911690636c665a55906064015b600060405180830381600087803b158015610e4957600080fd5b505af1158015610e5d573d6000803e3d6000fd5b505050505050565b60606000610e75838501856139fb565b9050610eb16040805160c08101825260609181018281528282018390526080820192909252600060a08201529081908152602001600081525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ba5b79826040518163ffffffff1660e01b8152600401606060405180830381865afa158015610f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f409190613a3d565b5050602082018190528251610f55919061200d565b85525050604051610f6c9250839150602001613a6b565b6040516020818303038152906040529250505092915050565b610fb3336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b610fe9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff560076000613303565b8060005b8181101561105657600784848381811061101557611015613a9d565b8354600181018555600094855260209094206040909102929092019260020290910190506110438282613acc565b50508061104f90613b53565b9050610ff9565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b38383604051610a89929190613b8b565b6110b6336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b6110ec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611139576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a260065461119d9073ffffffffffffffffffffffffffffffffffffffff16826128bb565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015611236573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261127c9190810190613c6c565b90506112b860408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b6040516020016112c89190613cb5565b60405160208183030381529060405280519060200120816040516020016112ef9190613cb5565b6040516020818303038152906040528051906020012014610ae757604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c14800000000000000000000000000000000000000000000000000000000815261137191908390600401613cd1565b60405180910390fd5b60008060006113ac60405180608001604052806060815260200160608152602001606081526020016000151581525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355ac8d306040518163ffffffff1660e01b8152600401602060405180830381865afa158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190613cff565b6040517f7908f498000000000000000000000000000000000000000000000000000000008152600481018890526024810187905273ffffffffffffffffffffffffffffffffffffffff9190911690637908f498906044016000604051808303816000875af11580156114b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114f79190810190613ed4565b9299919850965090945092505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461155d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036115ae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060611651611d0a565b905090565b611684336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b6116ba576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fe6860fe3ccf5242864f07e485b5e63c2777d82f69ef809696a0400a4aed83d9e8260405161172291815260200190565b60405180910390a261176c73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163330846126ef565b6006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c490606401610994565b61181f336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b611855576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516118b491815260200190565b60405180910390a36118dd73ffffffffffffffffffffffffffffffffffffffff84168383612911565b505050565b611910336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b611946576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152336024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b1580156119fc57600080fd5b505af1158015611a10573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f0c8eaae01b888a7947a480c4c088bea47ce266f4c758a8bf534398c130a6d35d83604051611a7c91815260200190565b60405180910390a26006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052838116604483015290911690636c665a5590606401610e2f565b611b39336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b611b6f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bbc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610e5d57848482818110611bef57611bef613a9d565b905060400201803603810190611c059190613f2e565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611d0381613b53565b9050611bd5565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ba5b79826040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9e9190613a3d565b60408051600280825260608201909252929550909350909150816020015b6040805180820190915260008082526020820152815260200190600190039081611dbc57905050925060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018281525083600081518110611e4357611e43613a9d565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018381525083600181518110611eac57611eac613a9d565b6020026020010181905250505090565b611eea336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b611f20576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3a6f47285856040518363ffffffff1660e01b8152600401611f7e929190614191565b60408051808303816000875af1158015611f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc091906141b3565b604080518381526020810183905290810186905291935091507f462ff1f90b66e3549a190bb471a2276749250543bad2ce9c21f706d882a59dad906060015b60405180910390a150505050565b60008060008061204060405180608001604052806060815260200160608152602001606081526020016000151581525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355ac8d306040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cf9190613cff565b6040517fd7fc90ea000000000000000000000000000000000000000000000000000000008152600481018990526024810188905273ffffffffffffffffffffffffffffffffffffffff919091169063d7fc90ea906044016000604051808303816000875af1158015612145573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261218b91908101906141d7565b939b929a50909850965090945092505050565b6121cc336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b612202576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661224f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600580546122f09061423b565b80601f016020809104026020016040519081016040528092919081815260200182805461231c9061423b565b80156123695780601f1061233e57610100808354040283529160200191612369565b820191906000526020600020905b81548152906001019060200180831161234c57829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156123ea5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101612395565b50505050905090565b612421336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b612457576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124618282612967565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb90602401610e2f565b61250e336000357fffffffff000000000000000000000000000000000000000000000000000000001661262b565b612544576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e779ae7e856040518263ffffffff1660e01b81526004016125a29190614288565b6060604051808303816000875af11580156125c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e59190613a3d565b604080518481526020810184905290810182905292955090935091507ff75993dbe1645872cbbea6395e1feebee76b435baf0e4d62d7eac269c6f57b2490606001611fff565b60035460009060ff161561265d575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146126e9565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806126d8575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156126e5575060016126e9565b5060005b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526127cb9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612d13565b50505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612867919061429b565b810361287257505050565b61289473ffffffffffffffffffffffffffffffffffffffff8416836000612e22565b80156118dd576118dd73ffffffffffffffffffffffffffffffffffffffff84168383612fa4565b6128e67f0000000000000000000000000000000000000000000000000000000000000000838361309d565b610ae77f0000000000000000000000000000000000000000000000000000000000000000838361309d565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118dd9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612749565b600061297582840184614360565b805160208201516040517fd3a6f47200000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263d3a6f472926129f19290916004016144b6565b60408051808303816000875af1158015612a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3391906141b3565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae6919061429b565b90508015612ba1576006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c490606401600060405180830381600087803b158015612b8857600080fd5b505af1158015612b9c573d6000803e3d6000fd5b505050505b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c52919061429b565b905080156109c2576006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690635ceae9c490606401600060405180830381600087803b158015612cf457600080fd5b505af1158015612d08573d6000803e3d6000fd5b505050505050505050565b6000612d75826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130f09092919063ffffffff16565b9050805160001480612d96575080806020019051810190612d9691906144c9565b6118dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611371565b801580612ec257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec0919061429b565b155b612f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401611371565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118dd9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612749565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561301a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303e919061429b565b90506127cb847f095ea7b3000000000000000000000000000000000000000000000000000000008561307086866144e6565b60405173ffffffffffffffffffffffffffffffffffffffff90921660248301526044820152606401612749565b73ffffffffffffffffffffffffffffffffffffffff8216156130c5576130c5838360006127d1565b6118dd83827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6127d1565b60606130ff8484600085613109565b90505b9392505050565b60608247101561319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611371565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516131c49190613cb5565b60006040518083038185875af1925050503d8060008114613201576040519150601f19603f3d011682016040523d82523d6000602084013e613206565b606091505b509150915061321787838387613224565b925050505b949350505050565b606083156132ba5782516000036132b35773ffffffffffffffffffffffffffffffffffffffff85163b6132b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611371565b508161321c565b61321c83838151156132cf5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137191906134d7565b50805460008255600202906000526020600020908101906133249190613327565b50565b5b808211156133655780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201613328565b5090565b801515811461332457600080fd5b803561338281613369565b919050565b60006020828403121561339957600080fd5b813561310281613369565b73ffffffffffffffffffffffffffffffffffffffff8116811461332457600080fd5b6000602082840312156133d857600080fd5b8135613102816133a4565b6000602082840312156133f557600080fd5b5035919050565b60008060006060848603121561341157600080fd5b833561341c816133a4565b9250602084013561342c816133a4565b929592945050506040919091013590565b6000806040838503121561345057600080fd5b823561345b816133a4565b946020939093013593505050565b60005b8381101561348457818101518382015260200161346c565b50506000910152565b600081518084526134a5816020860160208601613469565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000613102602083018461348d565b600080604083850312156134fd57600080fd5b82359150602083013561350f816133a4565b809150509250929050565b6000806020838503121561352d57600080fd5b823567ffffffffffffffff8082111561354557600080fd5b818501915085601f83011261355957600080fd5b81358181111561356857600080fd5b86602082850101111561357a57600080fd5b60209290920196919550909350505050565b60008083601f84011261359e57600080fd5b50813567ffffffffffffffff8111156135b657600080fd5b6020830191508360208260061b85010111156135d157600080fd5b9250929050565b600080602083850312156135eb57600080fd5b823567ffffffffffffffff81111561360257600080fd5b61360e8582860161358c565b90969095509350505050565b6000806040838503121561362d57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101561366c57815187529582019590820190600101613650565b509495945050505050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156136c957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613697565b5050828501519150858103838701526136e2818361363c565b92505050604083015184820360408601526136fd828261348d565b9150506060830151613713606086018215159052565b509392505050565b8481528360208201528260408201526080606082015260006137406080830184613677565b9695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156137a2578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613767565b5091979650505050505050565b6000806000604084860312156137c457600080fd5b83356137cf816133a4565b9250602084013567ffffffffffffffff8111156137eb57600080fd5b6137f78682870161358c565b9497909650939450505050565b60006080828403121561381657600080fd5b50919050565b6000806040838503121561382f57600080fd5b823567ffffffffffffffff81111561384657600080fd5b61385285828601613804565b95602094909401359450505050565b85815284602082015283604082015282606082015260a06080820152600061388c60a0830184613677565b979650505050505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461338257600080fd5b600080604083850312156138da57600080fd5b82356138e5816133a4565b91506138f360208401613897565b90509250929050565b60006020828403121561390e57600080fd5b813567ffffffffffffffff81111561392557600080fd5b61321c84828501613804565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561398357613983613931565b60405290565b6040805190810167ffffffffffffffff8111828210171561398357613983613931565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139f3576139f3613931565b604052919050565b600060208284031215613a0d57600080fd5b6040516020810181811067ffffffffffffffff82111715613a3057613a30613931565b6040529135825250919050565b600080600060608486031215613a5257600080fd5b8351925060208401519150604084015190509250925092565b602081526000825160406020840152613a876060840182613677565b9050602084015160408401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8135613ad7816133a4565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b8457613b84613b24565b5060010190565b6020808252818101839052600090604080840186845b87811015613be4578135613bb4816133a4565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101613ba1565b5090979650505050505050565b600067ffffffffffffffff821115613c0b57613c0b613931565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000613c4a613c4584613bf1565b6139ac565b9050828152838383011115613c5e57600080fd5b613102836020830184613469565b600060208284031215613c7e57600080fd5b815167ffffffffffffffff811115613c9557600080fd5b8201601f81018413613ca657600080fd5b61321c84825160208401613c37565b60008251613cc7818460208701613469565b9190910192915050565b604081526000613ce4604083018561348d565b8281036020840152613cf6818561348d565b95945050505050565b600060208284031215613d1157600080fd5b8151613102816133a4565b600067ffffffffffffffff821115613d3657613d36613931565b5060051b60200190565b600082601f830112613d5157600080fd5b81516020613d61613c4583613d1c565b82815260059290921b84018101918181019086841115613d8057600080fd5b8286015b84811015613d9b5780518352918301918301613d84565b509695505050505050565b600082601f830112613db757600080fd5b61310283835160208501613c37565b805161338281613369565b600060808284031215613de357600080fd5b613deb613960565b9050815167ffffffffffffffff80821115613e0557600080fd5b818401915084601f830112613e1957600080fd5b81516020613e29613c4583613d1c565b82815260059290921b84018101918181019088841115613e4857600080fd5b948201945b83861015613e6f578551613e60816133a4565b82529482019490820190613e4d565b86525085810151935082841115613e8557600080fd5b613e9187858801613d40565b90850152506040840151915080821115613eaa57600080fd5b50613eb784828501613da6565b604083015250613ec960608301613dc6565b606082015292915050565b60008060008060808587031215613eea57600080fd5b845193506020850151925060408501519150606085015167ffffffffffffffff811115613f1657600080fd5b613f2287828801613dd1565b91505092959194509250565b600060408284031215613f4057600080fd5b613f48613989565b613f5183613897565b81526020830135613f6181613369565b60208201529392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613fa257600080fd5b830160208101925035905067ffffffffffffffff811115613fc257600080fd5b8060051b36038213156135d157600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561400657600080fd5b8260051b80836020870137939093016020019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261405457600080fd5b830160208101925035905067ffffffffffffffff81111561407457600080fd5b8036038213156135d157600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000608083016140dc8384613f6d565b60808652918290529060009060a086015b8183101561412b578335614100816133a4565b73ffffffffffffffffffffffffffffffffffffffff16815260209384019360019390930192016140ed565b6141386020870187613f6d565b94509250868103602088015261414f818585613fd4565b9350505050614161604084018461401f565b8583036040870152614174838284614083565b9250505061418460608401613377565b8015156060860152613713565b6040815260006141a460408301856140cc565b90508260208301529392505050565b600080604083850312156141c657600080fd5b505080516020909101519092909150565b600080600080600060a086880312156141ef57600080fd5b85519450602086015193506040860151925060608601519150608086015167ffffffffffffffff81111561422257600080fd5b61422e88828901613dd1565b9150509295509295909350565b600181811c9082168061424f57607f821691505b602082108103613816577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60208152600061310260208301846140cc565b6000602082840312156142ad57600080fd5b5051919050565b600082601f8301126142c557600080fd5b813560206142d5613c4583613d1c565b82815260059290921b840181019181810190868411156142f457600080fd5b8286015b84811015613d9b57803583529183019183016142f8565b600082601f83011261432057600080fd5b813561432e613c4582613bf1565b81815284602083860101111561434357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561437357600080fd5b823567ffffffffffffffff8082111561438b57600080fd5b908401906040828703121561439f57600080fd5b6143a7613989565b8235828111156143b657600080fd5b8301608081890312156143c857600080fd5b6143d0613960565b8135848111156143df57600080fd5b8201601f81018a136143f057600080fd5b80356143fe613c4582613d1c565b81815260059190911b8201880190888101908c83111561441d57600080fd5b928901925b82841015614444578335614435816133a4565b82529289019290890190614422565b8452505050818601358481111561445a57600080fd5b6144668a8285016142b4565b878301525060408201358481111561447d57600080fd5b6144898a82850161430f565b60408301525061449b60608301613377565b60608201528252509183013592820192909252949350505050565b6040815260006141a46040830185613677565b6000602082840312156144db57600080fd5b815161310281613369565b808201808211156126e9576126e9613b2456fea2646970667358221220a4bda04c296f70ac5e2df484593643909bf540387c79d144878af25a4543206764736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/strategies/TempleTokenBaseStrategy.sol/TempleTokenBaseStrategy.json b/apps/dapp/abi/contracts/v2/strategies/TempleTokenBaseStrategy.sol/TempleTokenBaseStrategy.json new file mode 100644 index 000000000..fd85e7d72 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/strategies/TempleTokenBaseStrategy.sol/TempleTokenBaseStrategy.json @@ -0,0 +1,800 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleTokenBaseStrategy", + "sourceName": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "string", + "name": "_strategyName", + "type": "string" + }, + { + "internalType": "address", + "name": "_treasuryReservesVault", + "type": "address" + }, + { + "internalType": "address", + "name": "_templeToken", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "expected", + "type": "string" + }, + { + "internalType": "string", + "name": "actual", + "type": "string" + } + ], + "name": "InvalidVersion", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "OnlyTreasuryReserveVault", + "type": "error" + }, + { + "inputs": [], + "name": "Unimplemented", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "name": "AssetBalancesCheckpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "ManualAdjustmentsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Shutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TempleBurned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TempleMinted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenAllowanceSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trv", + "type": "address" + } + ], + "name": "TreasuryReservesVaultSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "name": "automatedShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "borrowAndDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "debtCeilingUpdated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manualAdjustments", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "populateParamsData", + "type": "bytes" + } + ], + "name": "populateShutdownData", + "outputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "setManualAdjustments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setTokenAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trv", + "type": "address" + } + ], + "name": "setTreasuryReservesVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract ITempleERC20Token", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "trvDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestedAmount", + "type": "uint256" + } + ], + "name": "trvWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002cfc38038062002cfc83398101604081905262000034916200015c565b8484848483836001600160a01b038216620000625760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166200008a5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000bd5760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556005620000f783826200030b565b50600680546001600160a01b0319166001600160a01b039283161790559390931660805250620003d795505050505050565b80516001600160a01b03811681146200014157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200017557600080fd5b620001808662000129565b945060206200019181880162000129565b60408801519095506001600160401b0380821115620001af57600080fd5b818901915089601f830112620001c457600080fd5b815181811115620001d957620001d962000146565b604051601f8201601f19908116603f0116810190838211818310171562000204576200020462000146565b816040528281528c868487010111156200021d57600080fd5b600093505b8284101562000241578484018601518185018701529285019262000222565b6000868483010152809850505050505050620002606060870162000129565b9150620002706080870162000129565b90509295509295909350565b600181811c908216806200029157607f821691505b602082108103620002b257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200030657600081815260208120601f850160051c81016020861015620002e15750805b601f850160051c820191505b818110156200030257828155600101620002ed565b5050505b505050565b81516001600160401b0381111562000327576200032762000146565b6200033f816200033884546200027c565b84620002b8565b602080601f8311600181146200037757600084156200035e5750858301515b600019600386901b1c1916600185901b17855562000302565b600085815260208120601f198616915b82811015620003a85788860151825594840194600190910190840162000387565b5085821015620003c75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080516128ed6200040f60003960008181610359015281816110ef015281816113380152818161141201526117bc01526128ed6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063a25db5e2116100f9578063daeccc7911610097578063e321453411610071578063e321453414610412578063e337e11d1461041a578063eecb7c1b1461042d578063f40902561461044e57600080fd5b8063daeccc79146103c9578063db4f5e23146103f7578063e173ad251461040a57600080fd5b8063bfccf0ec116100d3578063bfccf0ec1461037b578063c34c08e51461038e578063ce5c715a146103ae578063d9a349c1146103b657600080fd5b8063a25db5e214610286578063a7229fd914610341578063b1a9069c1461035457600080fd5b806325829410116101665780635137bf16116101405780635137bf16146102fe57806359eef8ce146103115780638112c4af146103245780638fece34b1461032c57600080fd5b8063258294101461028657806338a63183146102c85780634a6c983b146102e857600080fd5b8063101d1684116101a2578063101d1684146102045780631810fe7f1461024e5780631ed760b41461026b5780631f2114051461027e57600080fd5b8063032ef901146101c957806307f184f1146101de578063097b144e146101f1575b600080fd5b6101dc6101d73660046121a3565b610461565b005b6101dc6101ec3660046121e9565b610510565b6101dc6101ff366004612206565b610648565b6006546102249073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60035461025b9060ff1681565b6040519015158152602001610245565b6101dc610279366004612247565b610715565b6101dc61076a565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b60405161024591906122e1565b6000546102249073ffffffffffffffffffffffffffffffffffffffff1681565b6102bb6102f63660046122f4565b606092915050565b6101dc61030c3660046123b2565b610889565b6101dc61031f3660046121e9565b61098c565b6101dc610c5b565b610334610d9b565b60405161024591906123f4565b6101dc61034f366004612206565b610daa565b6102247f000000000000000000000000000000000000000000000000000000000000000081565b6101dc610389366004612459565b610e9b565b6001546102249073ffffffffffffffffffffffffffffffffffffffff1681565b6103346110a2565b6101dc6103c43660046121e9565b61114f565b61025b6103d73660046124e3565b600260209081526000928352604080842090915290825290205460ff1681565b6101dc610405366004612518565b611294565b6102bb611486565b610334611514565b6101dc6104283660046122f4565b611596565b61044061043b366004612518565b6116ac565b604051908152602001610245565b6101dc61045c366004612518565b61181f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104b2576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610561576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105ae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610676336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6106ac576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b78383836119a0565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610766576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff1633146107bb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff16330361080c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b6108b7336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6108ed576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108f96007600061212f565b8060005b8181101561095a57600784848381811061091957610919612531565b8354600181018555600094855260209094206040909102929092019260020290910190506109478282612560565b505080610953906125e7565b90506108fd565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b3838360405161070892919061261f565b6109ba336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6109f0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a3d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a2600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015610b17573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b5d91908101906126b4565b9050610b9960408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b604051602001610ba99190612774565b6040516020818303038152906040528051906020012081604051602001610bd09190612774565b604051602081830303815290604052805190602001201461076657604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c148000000000000000000000000000000000000000000000000000000008152610c5291908390600401612790565b60405180910390fd5b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610cb1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610d02576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060610da56110a2565b905090565b610dd8336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b610e0e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051610e6d91815260200190565b60405180910390a3610e9673ffffffffffffffffffffffffffffffffffffffff84168383611a8a565b505050565b610ec9336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b610eff576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610f4c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b8281101561109a57848482818110610f7f57610f7f612531565b905060400201803603810190610f9591906127be565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611093816125e7565b9050610f65565b505050505050565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816110b957905050905060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200160008152508160008151811061114157611141612531565b602002602001018190525090565b61117d336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6111b3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611200576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6112c2336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6112f8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690636c665a5590606401600060405180830381600087803b15801561139257600080fd5b505af11580156113a6573d6000803e3d6000fd5b505050507f038c3960ed480af7eb250186e5f0f1357a33c0c6abf350b1953780f1cfd2bd70816040516113db91815260200190565b60405180910390a16040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561146b57600080fd5b505af115801561147f573d6000803e3d6000fd5b5050505050565b600580546114939061281b565b80601f01602080910402602001604051908101604052809291908181526020018280546114bf9061281b565b801561150c5780601f106114e15761010080835404028352916020019161150c565b820191906000526020600020905b8154815290600101906020018083116114ef57829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561158d5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611538565b50505050905090565b6115c4336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6115fa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116048282611b5e565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb90602401600060405180830381600087803b15801561169857600080fd5b505af115801561109a573d6000803e3d6000fd5b60065460009073ffffffffffffffffffffffffffffffffffffffff16338114611703576040517fbc1e53f7000000000000000000000000000000000000000000000000000000008152336004820152602401610c52565b8260000361173d576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518381527f9b1e2bce37f9871bdb14f78132f8b09f25fc535697415966de4537f8b84a12c59060200160405180910390a16040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b15801561180057600080fd5b505af1158015611814573d6000803e3d6000fd5b509495945050505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611872576040517fbc1e53f7000000000000000000000000000000000000000000000000000000008152336004820152602401610c52565b806000036118ac576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527f038c3960ed480af7eb250186e5f0f1357a33c0c6abf350b1953780f1cfd2bd70906020016113db565b60035460009060ff161561190e575060005473ffffffffffffffffffffffffffffffffffffffff83811691161461199a565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480611989575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156119965750600161199a565b5060005b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a36919061286e565b8103611a4157505050565b611a6373ffffffffffffffffffffffffffffffffffffffff8416836000611b90565b8015610e9657610e9673ffffffffffffffffffffffffffffffffffffffff84168383611d12565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610e969084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611e11565b6040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801580611c3057506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e919061286e565b155b611cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610c52565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610e969084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401611adc565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dac919061286e565b9050611e0b847f095ea7b30000000000000000000000000000000000000000000000000000000085611dde8686612887565b60405173ffffffffffffffffffffffffffffffffffffffff90921660248301526044820152606401611adc565b50505050565b6000611e73826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f209092919063ffffffff16565b9050805160001480611e94575080806020019051810190611e94919061289a565b610e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610c52565b6060611f2f8484600085611f37565b949350505050565b606082471015611fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610c52565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611ff29190612774565b60006040518083038185875af1925050503d806000811461202f576040519150601f19603f3d011682016040523d82523d6000602084013e612034565b606091505b509150915061204587838387612050565b979650505050505050565b606083156120e65782516000036120df5773ffffffffffffffffffffffffffffffffffffffff85163b6120df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c52565b5081611f2f565b611f2f83838151156120fb5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5291906122e1565b50805460008255600202906000526020600020908101906121509190612153565b50565b5b808211156121915780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201612154565b5090565b801515811461215057600080fd5b6000602082840312156121b557600080fd5b81356121c081612195565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461215057600080fd5b6000602082840312156121fb57600080fd5b81356121c0816121c7565b60008060006060848603121561221b57600080fd5b8335612226816121c7565b92506020840135612236816121c7565b929592945050506040919091013590565b6000806040838503121561225a57600080fd5b8235612265816121c7565b946020939093013593505050565b60005b8381101561228e578181015183820152602001612276565b50506000910152565b600081518084526122af816020860160208601612273565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006121c06020830184612297565b6000806020838503121561230757600080fd5b823567ffffffffffffffff8082111561231f57600080fd5b818501915085601f83011261233357600080fd5b81358181111561234257600080fd5b86602082850101111561235457600080fd5b60209290920196919550909350505050565b60008083601f84011261237857600080fd5b50813567ffffffffffffffff81111561239057600080fd5b6020830191508360208260061b85010111156123ab57600080fd5b9250929050565b600080602083850312156123c557600080fd5b823567ffffffffffffffff8111156123dc57600080fd5b6123e885828601612366565b90969095509350505050565b602080825282518282018190526000919060409081850190868401855b8281101561244c578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612411565b5091979650505050505050565b60008060006040848603121561246e57600080fd5b8335612479816121c7565b9250602084013567ffffffffffffffff81111561249557600080fd5b6124a186828701612366565b9497909650939450505050565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146124de57600080fd5b919050565b600080604083850312156124f657600080fd5b8235612501816121c7565b915061250f602084016124ae565b90509250929050565b60006020828403121561252a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b813561256b816121c7565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612618576126186125b8565b5060010190565b6020808252818101839052600090604080840186845b87811015612678578135612648816121c7565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101612635565b5090979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156126c657600080fd5b815167ffffffffffffffff808211156126de57600080fd5b818401915084601f8301126126f257600080fd5b81518181111561270457612704612685565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561274a5761274a612685565b8160405282815287602084870101111561276357600080fd5b612045836020830160208801612273565b60008251612786818460208701612273565b9190910192915050565b6040815260006127a36040830185612297565b82810360208401526127b58185612297565b95945050505050565b6000604082840312156127d057600080fd5b6040516040810181811067ffffffffffffffff821117156127f3576127f3612685565b6040526127ff836124ae565b8152602083013561280f81612195565b60208201529392505050565b600181811c9082168061282f57607f821691505b602082108103612868577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561288057600080fd5b5051919050565b8082018082111561199a5761199a6125b8565b6000602082840312156128ac57600080fd5b81516121c08161219556fea264697066735822122022ceb880a9ca064660e20c59a177444fe1743162669da80183b43213189edf2d64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063a25db5e2116100f9578063daeccc7911610097578063e321453411610071578063e321453414610412578063e337e11d1461041a578063eecb7c1b1461042d578063f40902561461044e57600080fd5b8063daeccc79146103c9578063db4f5e23146103f7578063e173ad251461040a57600080fd5b8063bfccf0ec116100d3578063bfccf0ec1461037b578063c34c08e51461038e578063ce5c715a146103ae578063d9a349c1146103b657600080fd5b8063a25db5e214610286578063a7229fd914610341578063b1a9069c1461035457600080fd5b806325829410116101665780635137bf16116101405780635137bf16146102fe57806359eef8ce146103115780638112c4af146103245780638fece34b1461032c57600080fd5b8063258294101461028657806338a63183146102c85780634a6c983b146102e857600080fd5b8063101d1684116101a2578063101d1684146102045780631810fe7f1461024e5780631ed760b41461026b5780631f2114051461027e57600080fd5b8063032ef901146101c957806307f184f1146101de578063097b144e146101f1575b600080fd5b6101dc6101d73660046121a3565b610461565b005b6101dc6101ec3660046121e9565b610510565b6101dc6101ff366004612206565b610648565b6006546102249073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60035461025b9060ff1681565b6040519015158152602001610245565b6101dc610279366004612247565b610715565b6101dc61076a565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b60405161024591906122e1565b6000546102249073ffffffffffffffffffffffffffffffffffffffff1681565b6102bb6102f63660046122f4565b606092915050565b6101dc61030c3660046123b2565b610889565b6101dc61031f3660046121e9565b61098c565b6101dc610c5b565b610334610d9b565b60405161024591906123f4565b6101dc61034f366004612206565b610daa565b6102247f000000000000000000000000000000000000000000000000000000000000000081565b6101dc610389366004612459565b610e9b565b6001546102249073ffffffffffffffffffffffffffffffffffffffff1681565b6103346110a2565b6101dc6103c43660046121e9565b61114f565b61025b6103d73660046124e3565b600260209081526000928352604080842090915290825290205460ff1681565b6101dc610405366004612518565b611294565b6102bb611486565b610334611514565b6101dc6104283660046122f4565b611596565b61044061043b366004612518565b6116ac565b604051908152602001610245565b6101dc61045c366004612518565b61181f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104b2576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610561576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105ae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610676336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6106ac576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b78383836119a0565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610766576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff1633146107bb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff16330361080c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b6108b7336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6108ed576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108f96007600061212f565b8060005b8181101561095a57600784848381811061091957610919612531565b8354600181018555600094855260209094206040909102929092019260020290910190506109478282612560565b505080610953906125e7565b90506108fd565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b3838360405161070892919061261f565b6109ba336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6109f0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a3d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a2600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015610b17573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b5d91908101906126b4565b9050610b9960408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b604051602001610ba99190612774565b6040516020818303038152906040528051906020012081604051602001610bd09190612774565b604051602081830303815290604052805190602001201461076657604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c148000000000000000000000000000000000000000000000000000000008152610c5291908390600401612790565b60405180910390fd5b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610cb1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610d02576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060610da56110a2565b905090565b610dd8336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b610e0e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051610e6d91815260200190565b60405180910390a3610e9673ffffffffffffffffffffffffffffffffffffffff84168383611a8a565b505050565b610ec9336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b610eff576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610f4c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b8281101561109a57848482818110610f7f57610f7f612531565b905060400201803603810190610f9591906127be565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611093816125e7565b9050610f65565b505050505050565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816110b957905050905060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200160008152508160008151811061114157611141612531565b602002602001018190525090565b61117d336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6111b3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611200576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6112c2336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6112f8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905230604483015290911690636c665a5590606401600060405180830381600087803b15801561139257600080fd5b505af11580156113a6573d6000803e3d6000fd5b505050507f038c3960ed480af7eb250186e5f0f1357a33c0c6abf350b1953780f1cfd2bd70816040516113db91815260200190565b60405180910390a16040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561146b57600080fd5b505af115801561147f573d6000803e3d6000fd5b5050505050565b600580546114939061281b565b80601f01602080910402602001604051908101604052809291908181526020018280546114bf9061281b565b801561150c5780601f106114e15761010080835404028352916020019161150c565b820191906000526020600020905b8154815290600101906020018083116114ef57829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561158d5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611538565b50505050905090565b6115c4336000357fffffffff00000000000000000000000000000000000000000000000000000000166118dc565b6115fa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116048282611b5e565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb90602401600060405180830381600087803b15801561169857600080fd5b505af115801561109a573d6000803e3d6000fd5b60065460009073ffffffffffffffffffffffffffffffffffffffff16338114611703576040517fbc1e53f7000000000000000000000000000000000000000000000000000000008152336004820152602401610c52565b8260000361173d576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518381527f9b1e2bce37f9871bdb14f78132f8b09f25fc535697415966de4537f8b84a12c59060200160405180910390a16040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b15801561180057600080fd5b505af1158015611814573d6000803e3d6000fd5b509495945050505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611872576040517fbc1e53f7000000000000000000000000000000000000000000000000000000008152336004820152602401610c52565b806000036118ac576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527f038c3960ed480af7eb250186e5f0f1357a33c0c6abf350b1953780f1cfd2bd70906020016113db565b60035460009060ff161561190e575060005473ffffffffffffffffffffffffffffffffffffffff83811691161461199a565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480611989575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156119965750600161199a565b5060005b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a36919061286e565b8103611a4157505050565b611a6373ffffffffffffffffffffffffffffffffffffffff8416836000611b90565b8015610e9657610e9673ffffffffffffffffffffffffffffffffffffffff84168383611d12565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610e969084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611e11565b6040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801580611c3057506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e919061286e565b155b611cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610c52565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610e969084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401611adc565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dac919061286e565b9050611e0b847f095ea7b30000000000000000000000000000000000000000000000000000000085611dde8686612887565b60405173ffffffffffffffffffffffffffffffffffffffff90921660248301526044820152606401611adc565b50505050565b6000611e73826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f209092919063ffffffff16565b9050805160001480611e94575080806020019051810190611e94919061289a565b610e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610c52565b6060611f2f8484600085611f37565b949350505050565b606082471015611fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610c52565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611ff29190612774565b60006040518083038185875af1925050503d806000811461202f576040519150601f19603f3d011682016040523d82523d6000602084013e612034565b606091505b509150915061204587838387612050565b979650505050505050565b606083156120e65782516000036120df5773ffffffffffffffffffffffffffffffffffffffff85163b6120df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c52565b5081611f2f565b611f2f83838151156120fb5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5291906122e1565b50805460008255600202906000526020600020908101906121509190612153565b50565b5b808211156121915780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201612154565b5090565b801515811461215057600080fd5b6000602082840312156121b557600080fd5b81356121c081612195565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461215057600080fd5b6000602082840312156121fb57600080fd5b81356121c0816121c7565b60008060006060848603121561221b57600080fd5b8335612226816121c7565b92506020840135612236816121c7565b929592945050506040919091013590565b6000806040838503121561225a57600080fd5b8235612265816121c7565b946020939093013593505050565b60005b8381101561228e578181015183820152602001612276565b50506000910152565b600081518084526122af816020860160208601612273565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006121c06020830184612297565b6000806020838503121561230757600080fd5b823567ffffffffffffffff8082111561231f57600080fd5b818501915085601f83011261233357600080fd5b81358181111561234257600080fd5b86602082850101111561235457600080fd5b60209290920196919550909350505050565b60008083601f84011261237857600080fd5b50813567ffffffffffffffff81111561239057600080fd5b6020830191508360208260061b85010111156123ab57600080fd5b9250929050565b600080602083850312156123c557600080fd5b823567ffffffffffffffff8111156123dc57600080fd5b6123e885828601612366565b90969095509350505050565b602080825282518282018190526000919060409081850190868401855b8281101561244c578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612411565b5091979650505050505050565b60008060006040848603121561246e57600080fd5b8335612479816121c7565b9250602084013567ffffffffffffffff81111561249557600080fd5b6124a186828701612366565b9497909650939450505050565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146124de57600080fd5b919050565b600080604083850312156124f657600080fd5b8235612501816121c7565b915061250f602084016124ae565b90509250929050565b60006020828403121561252a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b813561256b816121c7565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612618576126186125b8565b5060010190565b6020808252818101839052600090604080840186845b87811015612678578135612648816121c7565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101612635565b5090979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156126c657600080fd5b815167ffffffffffffffff808211156126de57600080fd5b818401915084601f8301126126f257600080fd5b81518181111561270457612704612685565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561274a5761274a612685565b8160405282815287602084870101111561276357600080fd5b612045836020830160208801612273565b60008251612786818460208701612273565b9190910192915050565b6040815260006127a36040830185612297565b82810360208401526127b58185612297565b95945050505050565b6000604082840312156127d057600080fd5b6040516040810181811067ffffffffffffffff821117156127f3576127f3612685565b6040526127ff836124ae565b8152602083013561280f81612195565b60208201529392505050565b600181811c9082168061282f57607f821691505b602082108103612868577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561288057600080fd5b5051919050565b8082018082111561199a5761199a6125b8565b6000602082840312156128ac57600080fd5b81516121c08161219556fea264697066735822122022ceb880a9ca064660e20c59a177444fe1743162669da80183b43213189edf2d64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/strategies/TlcStrategy.sol/TlcStrategy.json b/apps/dapp/abi/contracts/v2/strategies/TlcStrategy.sol/TlcStrategy.json new file mode 100644 index 000000000..52013b2e2 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/strategies/TlcStrategy.sol/TlcStrategy.json @@ -0,0 +1,779 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TlcStrategy", + "sourceName": "contracts/v2/strategies/TlcStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "string", + "name": "_strategyName", + "type": "string" + }, + { + "internalType": "address", + "name": "_treasuryReservesVault", + "type": "address" + }, + { + "internalType": "address", + "name": "_tlc", + "type": "address" + }, + { + "internalType": "address", + "name": "_daiToken", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "expected", + "type": "string" + }, + { + "internalType": "string", + "name": "actual", + "type": "string" + } + ], + "name": "InvalidVersion", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "OnlyTreasuryReserveVault", + "type": "error" + }, + { + "inputs": [], + "name": "Unimplemented", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "name": "AssetBalancesCheckpoint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "indexed": false, + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "ManualAdjustmentsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Shutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenAllowanceSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trv", + "type": "address" + } + ], + "name": "TreasuryReservesVaultSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "apiVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "name": "automatedShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "checkpointAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daiToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "newDebtCeiling", + "type": "uint256" + } + ], + "name": "debtCeilingUpdated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "fundFromTrv", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestAssetBalances", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalance[]", + "name": "assetBalances", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manualAdjustments", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "populateParamsData", + "type": "bytes" + } + ], + "name": "populateShutdownData", + "outputs": [ + { + "internalType": "bytes", + "name": "shutdownParamsData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "internalType": "struct ITempleStrategy.AssetBalanceDelta[]", + "name": "adjustments", + "type": "tuple[]" + } + ], + "name": "setManualAdjustments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setTokenAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trv", + "type": "address" + } + ], + "name": "setTreasuryReservesVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "tlc", + "outputs": [ + { + "internalType": "contract ITempleLineOfCredit", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002ba838038062002ba883398101604081905262000034916200015f565b8585858583836001600160a01b038216620000625760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166200008a5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000bd5760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556005620000f783826200031f565b50600680546001600160a01b0319166001600160a01b039283161790559485166080525050501660a05250620003eb92505050565b80516001600160a01b03811681146200014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c087890312156200017957600080fd5b62000184876200012c565b95506020620001958189016200012c565b60408901519096506001600160401b0380821115620001b357600080fd5b818a0191508a601f830112620001c857600080fd5b815181811115620001dd57620001dd62000149565b604051601f8201601f19908116603f0116810190838211818310171562000208576200020862000149565b816040528281528d868487010111156200022157600080fd5b600093505b8284101562000245578484018601518185018701529285019262000226565b600086848301015280995050505050505062000264606088016200012c565b925062000274608088016200012c565b91506200028460a088016200012c565b90509295509295509295565b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031a57600081815260208120601f850160051c81016020861015620002f55750805b601f850160051c820191505b81811015620003165782815560010162000301565b5050505b505050565b81516001600160401b038111156200033b576200033b62000149565b62000353816200034c845462000290565b84620002cc565b602080601f8311600181146200038b5760008415620003725750858301515b600019600386901b1c1916600185901b17855562000316565b600085815260208120601f198616915b82811015620003bc578886015182559484019460019091019084016200039b565b5085821015620003db5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161277462000434600039600081816103610152818161097801526112e20152600081816103c30152818161089301528181611208015261183801526127746000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80638112c4af116100f9578063ce5c715a11610097578063daeccc7911610071578063daeccc79146103f8578063e173ad2514610426578063e32145341461042e578063e337e11d1461043657600080fd5b8063ce5c715a146103b6578063d6397c8b146103be578063d9a349c1146103e557600080fd5b8063a7229fd9116100d3578063a7229fd914610349578063be22f5461461035c578063bfccf0ec14610383578063c34c08e51461039657600080fd5b80638112c4af1461032c5780638fece34b14610334578063a25db5e21461027b57600080fd5b80631f2114051161016657806338a631831161014057806338a63183146102d05780634a6c983b146102f05780635137bf161461030657806359eef8ce1461031957600080fd5b80631f21140514610273578063258294101461027b5780632642e7ed146102bd57600080fd5b8063101d168411610197578063101d1684146101f95780631810fe7f146102435780631ed760b41461026057600080fd5b8063032ef901146101be57806307f184f1146101d3578063097b144e146101e6575b600080fd5b6101d16101cc366004611fb7565b610449565b005b6101d16101e1366004611ffd565b6104f8565b6101d16101f436600461201a565b610630565b6006546102199073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546102509060ff1681565b604051901515815260200161023a565b6101d161026e36600461205b565b6106fd565b6101d161075c565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b60405161023a91906120f5565b6101d16102cb366004612108565b61087b565b6000546102199073ffffffffffffffffffffffffffffffffffffffff1681565b6102b06102fe366004612138565b606092915050565b6101d16103143660046121f6565b6109f1565b6101d1610327366004611ffd565b610af4565b6101d1610dc3565b61033c610f03565b60405161023a9190612238565b6101d161035736600461201a565b610f12565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b6101d161039136600461229d565b611003565b6001546102199073ffffffffffffffffffffffffffffffffffffffff1681565b61033c611202565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b6101d16103f3366004611ffd565b611346565b610250610406366004612327565b600260209081526000928352604080842090915290825290205460ff1681565b6102b061148b565b61033c611519565b6101d1610444366004612138565b61159b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461049a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610549576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610596576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61065e336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b610694576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61069f83838361174c565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff16331461074e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107588282611836565b5050565b60045473ffffffffffffffffffffffffffffffffffffffff1633146107ad576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036107fe576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108ea576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527fd7a2d30ce18d7495fcf47018d0826e7d8f418065a350d8a2706b02d9bfe70d90910160405180910390a16006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052838116604483015290911690636c665a55906064015b600060405180830381600087803b1580156109d557600080fd5b505af11580156109e9573d6000803e3d6000fd5b505050505050565b610a1f336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b610a55576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6160076000611f43565b8060005b81811015610ac2576007848483818110610a8157610a8161235c565b835460018101855560009485526020909420604090910292909201926002029091019050610aaf828261238b565b505080610abb90612412565b9050610a65565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b383836040516106f092919061244a565b610b22336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b610b58576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610ba5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a2600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015610c7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cc591908101906124df565b9050610d0160408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b604051602001610d11919061259f565b6040516020818303038152906040528051906020012081604051602001610d38919061259f565b604051602081830303815290604052805190602001201461075857604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c148000000000000000000000000000000000000000000000000000000008152610dba919083906004016125bb565b60405180910390fd5b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610e19576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610e6a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060610f0d611202565b905090565b610f40336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b610f76576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051610fd591815260200190565b60405180910390a3610ffe73ffffffffffffffffffffffffffffffffffffffff8416838361189e565b505050565b611031336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b611067576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166110b4576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156109e9578484828181106110e7576110e761235c565b9050604002018036038101906110fd91906125e9565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556111fb81612412565b90506110cd565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a356bad96040518163ffffffff1660e01b8152600401606060405180830381865afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112959190612646565b604080516001808252818301909252919250816020015b60408051808201909152600080825260208201528152602001906001900390816112ac57905050915060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018260400151815250826000815181106113375761133761235c565b60200260200101819052505090565b611374336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b6113aa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166113f7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60058054611498906126a2565b80601f01602080910402602001604051908101604052809291908181526020018280546114c4906126a2565b80156115115780601f106114e657610100808354040283529160200191611511565b820191906000526020600020905b8154815290600101906020018083116114f457829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156115925760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff16825260019081015482840152908352909201910161153d565b50505050905090565b6115c9336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b6115ff576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116098282611972565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb906024016109bb565b60035460009060ff16156116ba575060005473ffffffffffffffffffffffffffffffffffffffff838116911614611746565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480611735575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561174257506001611746565b5060005b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e291906126f5565b81036117ed57505050565b61180f73ffffffffffffffffffffffffffffffffffffffff84168360006119a4565b8015610ffe57610ffe73ffffffffffffffffffffffffffffffffffffffff84168383611b26565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663089771b36040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109d557600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610ffe9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611c25565b6040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801580611a4457506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4291906126f5565b155b611ad0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610dba565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610ffe9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016118f0565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc091906126f5565b9050611c1f847f095ea7b30000000000000000000000000000000000000000000000000000000085611bf2868661270e565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064016118f0565b50505050565b6000611c87826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611d349092919063ffffffff16565b9050805160001480611ca8575080806020019051810190611ca89190612721565b610ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610dba565b6060611d438484600085611d4b565b949350505050565b606082471015611ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610dba565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611e06919061259f565b60006040518083038185875af1925050503d8060008114611e43576040519150601f19603f3d011682016040523d82523d6000602084013e611e48565b606091505b5091509150611e5987838387611e64565b979650505050505050565b60608315611efa578251600003611ef35773ffffffffffffffffffffffffffffffffffffffff85163b611ef3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dba565b5081611d43565b611d438383815115611f0f5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba91906120f5565b5080546000825560020290600052602060002090810190611f649190611f67565b50565b5b80821115611fa55780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201611f68565b5090565b8015158114611f6457600080fd5b600060208284031215611fc957600080fd5b8135611fd481611fa9565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611f6457600080fd5b60006020828403121561200f57600080fd5b8135611fd481611fdb565b60008060006060848603121561202f57600080fd5b833561203a81611fdb565b9250602084013561204a81611fdb565b929592945050506040919091013590565b6000806040838503121561206e57600080fd5b823561207981611fdb565b946020939093013593505050565b60005b838110156120a257818101518382015260200161208a565b50506000910152565b600081518084526120c3816020860160208601612087565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fd460208301846120ab565b6000806040838503121561211b57600080fd5b82359150602083013561212d81611fdb565b809150509250929050565b6000806020838503121561214b57600080fd5b823567ffffffffffffffff8082111561216357600080fd5b818501915085601f83011261217757600080fd5b81358181111561218657600080fd5b86602082850101111561219857600080fd5b60209290920196919550909350505050565b60008083601f8401126121bc57600080fd5b50813567ffffffffffffffff8111156121d457600080fd5b6020830191508360208260061b85010111156121ef57600080fd5b9250929050565b6000806020838503121561220957600080fd5b823567ffffffffffffffff81111561222057600080fd5b61222c858286016121aa565b90969095509350505050565b602080825282518282018190526000919060409081850190868401855b82811015612290578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612255565b5091979650505050505050565b6000806000604084860312156122b257600080fd5b83356122bd81611fdb565b9250602084013567ffffffffffffffff8111156122d957600080fd5b6122e5868287016121aa565b9497909650939450505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461232257600080fd5b919050565b6000806040838503121561233a57600080fd5b823561234581611fdb565b9150612353602084016122f2565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b813561239681611fdb565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612443576124436123e3565b5060010190565b6020808252818101839052600090604080840186845b878110156124a357813561247381611fdb565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101612460565b5090979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156124f157600080fd5b815167ffffffffffffffff8082111561250957600080fd5b818401915084601f83011261251d57600080fd5b81518181111561252f5761252f6124b0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612575576125756124b0565b8160405282815287602084870101111561258e57600080fd5b611e59836020830160208801612087565b600082516125b1818460208701612087565b9190910192915050565b6040815260006125ce60408301856120ab565b82810360208401526125e081856120ab565b95945050505050565b6000604082840312156125fb57600080fd5b6040516040810181811067ffffffffffffffff8211171561261e5761261e6124b0565b60405261262a836122f2565b8152602083013561263a81611fa9565b60208201529392505050565b60006060828403121561265857600080fd5b6040516060810181811067ffffffffffffffff8211171561267b5761267b6124b0565b80604052508251815260208301516020820152604083015160408201528091505092915050565b600181811c908216806126b657607f821691505b6020821081036126ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561270757600080fd5b5051919050565b80820180821115611746576117466123e3565b60006020828403121561273357600080fd5b8151611fd481611fa956fea2646970667358221220b12ca1de8c950e84a71acc7700cf455ac5941c7b2098de8d8ef0eaa2752c915664736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101b95760003560e01c80638112c4af116100f9578063ce5c715a11610097578063daeccc7911610071578063daeccc79146103f8578063e173ad2514610426578063e32145341461042e578063e337e11d1461043657600080fd5b8063ce5c715a146103b6578063d6397c8b146103be578063d9a349c1146103e557600080fd5b8063a7229fd9116100d3578063a7229fd914610349578063be22f5461461035c578063bfccf0ec14610383578063c34c08e51461039657600080fd5b80638112c4af1461032c5780638fece34b14610334578063a25db5e21461027b57600080fd5b80631f2114051161016657806338a631831161014057806338a63183146102d05780634a6c983b146102f05780635137bf161461030657806359eef8ce1461031957600080fd5b80631f21140514610273578063258294101461027b5780632642e7ed146102bd57600080fd5b8063101d168411610197578063101d1684146101f95780631810fe7f146102435780631ed760b41461026057600080fd5b8063032ef901146101be57806307f184f1146101d3578063097b144e146101e6575b600080fd5b6101d16101cc366004611fb7565b610449565b005b6101d16101e1366004611ffd565b6104f8565b6101d16101f436600461201a565b610630565b6006546102199073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546102509060ff1681565b604051901515815260200161023a565b6101d161026e36600461205b565b6106fd565b6101d161075c565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b60405161023a91906120f5565b6101d16102cb366004612108565b61087b565b6000546102199073ffffffffffffffffffffffffffffffffffffffff1681565b6102b06102fe366004612138565b606092915050565b6101d16103143660046121f6565b6109f1565b6101d1610327366004611ffd565b610af4565b6101d1610dc3565b61033c610f03565b60405161023a9190612238565b6101d161035736600461201a565b610f12565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b6101d161039136600461229d565b611003565b6001546102199073ffffffffffffffffffffffffffffffffffffffff1681565b61033c611202565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b6101d16103f3366004611ffd565b611346565b610250610406366004612327565b600260209081526000928352604080842090915290825290205460ff1681565b6102b061148b565b61033c611519565b6101d1610444366004612138565b61159b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461049a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610549576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610596576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61065e336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b610694576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61069f83838361174c565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff16331461074e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107588282611836565b5050565b60045473ffffffffffffffffffffffffffffffffffffffff1633146107ad576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036107fe576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108ea576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805183815273ffffffffffffffffffffffffffffffffffffffff831660208201527fd7a2d30ce18d7495fcf47018d0826e7d8f418065a350d8a2706b02d9bfe70d90910160405180910390a16006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052838116604483015290911690636c665a55906064015b600060405180830381600087803b1580156109d557600080fd5b505af11580156109e9573d6000803e3d6000fd5b505050505050565b610a1f336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b610a55576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6160076000611f43565b8060005b81811015610ac2576007848483818110610a8157610a8161235c565b835460018101855560009485526020909420604090910292909201926002029091019050610aaf828261238b565b505080610abb90612412565b9050610a65565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b383836040516106f092919061244a565b610b22336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b610b58576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610ba5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a2600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015610c7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cc591908101906124df565b9050610d0160408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b604051602001610d11919061259f565b6040516020818303038152906040528051906020012081604051602001610d38919061259f565b604051602081830303815290604052805190602001201461075857604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c148000000000000000000000000000000000000000000000000000000008152610dba919083906004016125bb565b60405180910390fd5b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610e19576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610e6a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6060610f0d611202565b905090565b610f40336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b610f76576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051610fd591815260200190565b60405180910390a3610ffe73ffffffffffffffffffffffffffffffffffffffff8416838361189e565b505050565b611031336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b611067576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166110b4576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156109e9578484828181106110e7576110e761235c565b9050604002018036038101906110fd91906125e9565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556111fb81612412565b90506110cd565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a356bad96040518163ffffffff1660e01b8152600401606060405180830381865afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112959190612646565b604080516001808252818301909252919250816020015b60408051808201909152600080825260208201528152602001906001900390816112ac57905050915060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018260400151815250826000815181106113375761133761235c565b60200260200101819052505090565b611374336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b6113aa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166113f7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60058054611498906126a2565b80601f01602080910402602001604051908101604052809291908181526020018280546114c4906126a2565b80156115115780601f106114e657610100808354040283529160200191611511565b820191906000526020600020905b8154815290600101906020018083116114f457829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156115925760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff16825260019081015482840152908352909201910161153d565b50505050905090565b6115c9336000357fffffffff0000000000000000000000000000000000000000000000000000000016611688565b6115ff576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116098282611972565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb906024016109bb565b60035460009060ff16156116ba575060005473ffffffffffffffffffffffffffffffffffffffff838116911614611746565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480611735575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561174257506001611746565b5060005b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e291906126f5565b81036117ed57505050565b61180f73ffffffffffffffffffffffffffffffffffffffff84168360006119a4565b8015610ffe57610ffe73ffffffffffffffffffffffffffffffffffffffff84168383611b26565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663089771b36040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109d557600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610ffe9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611c25565b6040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801580611a4457506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4291906126f5565b155b611ad0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610dba565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610ffe9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016118f0565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc091906126f5565b9050611c1f847f095ea7b30000000000000000000000000000000000000000000000000000000085611bf2868661270e565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064016118f0565b50505050565b6000611c87826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611d349092919063ffffffff16565b9050805160001480611ca8575080806020019051810190611ca89190612721565b610ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610dba565b6060611d438484600085611d4b565b949350505050565b606082471015611ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610dba565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611e06919061259f565b60006040518083038185875af1925050503d8060008114611e43576040519150601f19603f3d011682016040523d82523d6000602084013e611e48565b606091505b5091509150611e5987838387611e64565b979650505050505050565b60608315611efa578251600003611ef35773ffffffffffffffffffffffffffffffffffffffff85163b611ef3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dba565b5081611d43565b611d438383815115611f0f5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba91906120f5565b5080546000825560020290600052602060002090810190611f649190611f67565b50565b5b80821115611fa55780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201611f68565b5090565b8015158114611f6457600080fd5b600060208284031215611fc957600080fd5b8135611fd481611fa9565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611f6457600080fd5b60006020828403121561200f57600080fd5b8135611fd481611fdb565b60008060006060848603121561202f57600080fd5b833561203a81611fdb565b9250602084013561204a81611fdb565b929592945050506040919091013590565b6000806040838503121561206e57600080fd5b823561207981611fdb565b946020939093013593505050565b60005b838110156120a257818101518382015260200161208a565b50506000910152565b600081518084526120c3816020860160208601612087565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fd460208301846120ab565b6000806040838503121561211b57600080fd5b82359150602083013561212d81611fdb565b809150509250929050565b6000806020838503121561214b57600080fd5b823567ffffffffffffffff8082111561216357600080fd5b818501915085601f83011261217757600080fd5b81358181111561218657600080fd5b86602082850101111561219857600080fd5b60209290920196919550909350505050565b60008083601f8401126121bc57600080fd5b50813567ffffffffffffffff8111156121d457600080fd5b6020830191508360208260061b85010111156121ef57600080fd5b9250929050565b6000806020838503121561220957600080fd5b823567ffffffffffffffff81111561222057600080fd5b61222c858286016121aa565b90969095509350505050565b602080825282518282018190526000919060409081850190868401855b82811015612290578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612255565b5091979650505050505050565b6000806000604084860312156122b257600080fd5b83356122bd81611fdb565b9250602084013567ffffffffffffffff8111156122d957600080fd5b6122e5868287016121aa565b9497909650939450505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461232257600080fd5b919050565b6000806040838503121561233a57600080fd5b823561234581611fdb565b9150612353602084016122f2565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b813561239681611fdb565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612443576124436123e3565b5060010190565b6020808252818101839052600090604080840186845b878110156124a357813561247381611fdb565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101612460565b5090979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156124f157600080fd5b815167ffffffffffffffff8082111561250957600080fd5b818401915084601f83011261251d57600080fd5b81518181111561252f5761252f6124b0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612575576125756124b0565b8160405282815287602084870101111561258e57600080fd5b611e59836020830160208801612087565b600082516125b1818460208701612087565b9190910192915050565b6040815260006125ce60408301856120ab565b82810360208401526125e081856120ab565b95945050505050565b6000604082840312156125fb57600080fd5b6040516040810181811067ffffffffffffffff8211171561261e5761261e6124b0565b60405261262a836122f2565b8152602083013561263a81611fa9565b60208201529392505050565b60006060828403121561265857600080fd5b6040516060810181811067ffffffffffffffff8211171561267b5761267b6124b0565b80604052508251815260208301516020820152604083015160408201528091505092915050565b600181811c908216806126b657607f821691505b6020821081036126ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561270757600080fd5b5051919050565b80820180821115611746576117466123e3565b60006020828403121561273357600080fd5b8151611fd481611fa956fea2646970667358221220b12ca1de8c950e84a71acc7700cf455ac5941c7b2098de8d8ef0eaa2752c915664736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol/TempleLineOfCredit.json b/apps/dapp/abi/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol/TempleLineOfCredit.json new file mode 100644 index 000000000..682e841e5 --- /dev/null +++ b/apps/dapp/abi/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol/TempleLineOfCredit.json @@ -0,0 +1,1309 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleLineOfCredit", + "sourceName": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initialRescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_initialExecutor", + "type": "address" + }, + { + "internalType": "address", + "name": "_circuitBreakerProxy", + "type": "address" + }, + { + "internalType": "address", + "name": "_templeToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_daiToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_maxLtvRatio", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_interestRateModel", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "totalDebtAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "ExceededBorrowedAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "collateralAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateralValue", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentDaiDebt", + "type": "uint256" + } + ], + "name": "ExceededMaxLtv", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "InsufficientAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv18_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denominator", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "UD60x18", + "name": "x", + "type": "uint256" + } + ], + "name": "PRBMath_UD60x18_Exp2_InputTooBig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "UD60x18", + "name": "x", + "type": "uint256" + } + ], + "name": "PRBMath_UD60x18_Exp_InputTooBig", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "amount", + "type": "uint128" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "BorrowPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fundedBy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "collateralAmount", + "type": "uint128" + } + ], + "name": "CollateralAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "collateralAmount", + "type": "uint128" + } + ], + "name": "CollateralRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "interestRateModel", + "type": "address" + } + ], + "name": "InterestRateModelSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint96", + "name": "newInterestRate", + "type": "uint96" + } + ], + "name": "InterestRateUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "collateralSeized", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "collateralValue", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "daiDebtWiped", + "type": "uint128" + } + ], + "name": "Liquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "LiquidationsPausedSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "maxLtvRatio", + "type": "uint256" + } + ], + "name": "MaxLtvRatioSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint128", + "name": "amount", + "type": "uint128" + } + ], + "name": "MinBorrowAmountSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fundedBy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "repayAmount", + "type": "uint128" + } + ], + "name": "Repay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "treasuryReservesVault", + "type": "address" + } + ], + "name": "TlcStrategySet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "accountData", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "collateral", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "debtCheckpoint", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "interestAccumulator", + "type": "uint256" + } + ], + "internalType": "struct ITlcDataTypes.AccountData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "accountPosition", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "collateral", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "currentDebt", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "maxBorrow", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "healthFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "loanToValueRatio", + "type": "uint256" + } + ], + "internalType": "struct ITlcDataTypes.AccountPosition", + "name": "position", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "collateralAmount", + "type": "uint128" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "addCollateral", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + } + ], + "name": "batchLiquidate", + "outputs": [ + { + "internalType": "uint128", + "name": "totalCollateralClaimed", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "totalDebtWiped", + "type": "uint128" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "borrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "circuitBreakerProxy", + "outputs": [ + { + "internalType": "contract ITempleCircuitBreakerProxy", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + } + ], + "name": "computeLiquidity", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "hasExceededMaxLtv", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "collateral", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "collateralValue", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "currentDebt", + "type": "uint128" + } + ], + "internalType": "struct ITlcDataTypes.LiquidationStatus[]", + "name": "status", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daiToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "debtTokenDetails", + "outputs": [ + { + "components": [ + { + "internalType": "uint96", + "name": "maxLtvRatio", + "type": "uint96" + }, + { + "internalType": "contract IInterestRateModel", + "name": "interestRateModel", + "type": "address" + }, + { + "internalType": "bool", + "name": "borrowsPaused", + "type": "bool" + } + ], + "internalType": "struct ITlcDataTypes.DebtTokenConfig", + "name": "", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "interestAccumulatorUpdatedAt", + "type": "uint32" + }, + { + "internalType": "uint128", + "name": "totalDebt", + "type": "uint128" + }, + { + "internalType": "uint96", + "name": "interestRate", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "interestAccumulator", + "type": "uint256" + } + ], + "internalType": "struct ITlcDataTypes.DebtTokenData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDebtTokenCache", + "outputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint96", + "name": "maxLtvRatio", + "type": "uint96" + }, + { + "internalType": "contract IInterestRateModel", + "name": "interestRateModel", + "type": "address" + }, + { + "internalType": "bool", + "name": "borrowsPaused", + "type": "bool" + } + ], + "internalType": "struct ITlcDataTypes.DebtTokenConfig", + "name": "config", + "type": "tuple" + }, + { + "internalType": "uint128", + "name": "totalDebt", + "type": "uint128" + }, + { + "internalType": "uint96", + "name": "interestRate", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "interestAccumulator", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "trvDebtCeiling", + "type": "uint256" + } + ], + "internalType": "struct TempleLineOfCredit.DebtTokenCache", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "liquidationsPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minBorrowAmount", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "refreshInterestRates", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "removeCollateral", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "repayAmount", + "type": "uint128" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "repay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "repayAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "setBorrowPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "interestRateModel", + "type": "address" + } + ], + "name": "setInterestRateModel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "name": "setLiquidationsPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "maxLtvRatio", + "type": "uint256" + } + ], + "name": "setMaxLtvRatio", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + } + ], + "name": "setMinBorrowAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newTlcStrategy", + "type": "address" + } + ], + "name": "setTlcStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tlcStrategy", + "outputs": [ + { + "internalType": "contract ITlcStrategy", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalDebtPosition", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "utilizationRatio", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalDebt", + "type": "uint256" + } + ], + "internalType": "struct ITlcDataTypes.TotalDebtPosition", + "name": "position", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasuryReservesVault", + "outputs": [ + { + "internalType": "contract ITreasuryReservesVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60e0604052600d8054610100600160881b031916693635c9adc5dea00000001790553480156200002e57600080fd5b50604051620054163803806200541683398101604081905262000051916200021a565b86866001600160a01b0382166200007b5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000a35760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000d65760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b03199081166001600160a01b03948516179091556001805490911691831691909117905585811660c052848116608052831660a052670de0b6b3a76400008211156200014057604051633494a40d60e21b815260040160405180910390fd5b6001600160a01b0381166200016857604051631536c32360e21b815260040160405180910390fd5b60408051606080820183526001600160601b039094168082526001600160a01b03909316602080830182905260009284018390526c01000000000000000000000000909102909317600955600a805460ff19169055815160808101835263ffffffff4216808252938101829052918201526b033b2e3c9fd0803ce80000009201829052600b55600c5550620002a69350505050565b80516001600160a01b03811681146200021557600080fd5b919050565b600080600080600080600060e0888a0312156200023657600080fd5b6200024188620001fd565b96506200025160208901620001fd565b95506200026160408901620001fd565b94506200027160608901620001fd565b93506200028160808901620001fd565b925060a088015191506200029860c08901620001fd565b905092959891949750929550565b60805160a05160c0516150c96200034d60003960008181610540015281816116fc01526121b20152600081816107610152818161216c0152818161251e015281816126280152818161266a0152818161306f015281816130ec0152613a3201526000818161067a015281816113e60152818161146401528181611634015281816116b60152818161184401528181611c4201528181611cc40152611fe401526150c96000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c80638fb5053e11610160578063be415927116100d8578063d9a349c11161008c578063daeccc7911610071578063daeccc791461082f578063deb906e71461085d578063f46cf7f01461092c57600080fd5b8063d9a349c114610809578063d9a7ed5c1461081c57600080fd5b8063c34c08e5116100bd578063c34c08e5146107a9578063c3e7a9de146107c9578063d495f89f146107e957600080fd5b8063be41592714610783578063bfccf0ec1461079657600080fd5b8063a8cdda061161012f578063b3a3684711610114578063b3a368471461069c578063b74823bb146106af578063be22f5461461075c57600080fd5b8063a8cdda0614610662578063b1a9069c1461067557600080fd5b80638fb5053e146105ff578063939752bd14610612578063a356bad914610625578063a7229fd91461064f57600080fd5b806338a631831161020e5780638112c4af116101c2578063872ec463116101a7578063872ec463146105cc5780638bcd4016146105df5780638f6d0f11146105f257600080fd5b80638112c4af1461058857806381cf90711461059057600080fd5b80634b2adf17116101f35780634b2adf171461053b5780634ffd48f4146105625780637c27383b1461057557600080fd5b806338a63183146105045780634ac8eb5f1461052457600080fd5b80630a5db8a8116102655780631810fe7f1161024a5780631810fe7f146104cc5780631f211405146104e957806325e6b5e8146104f157600080fd5b80630a5db8a814610445578063101d16841461048757600080fd5b80630230192d14610297578063032ef9011461041557806307f184f11461042a578063089771b31461043d575b600080fd5b60408051606080820183526000808352602080840182905292840181905283516080808201865282825281850183905281860183905290830191909152835180830185526009546bffffffffffffffffffffffff80821683526c0100000000000000000000000090910473ffffffffffffffffffffffffffffffffffffffff1682860152600a5460ff1615158287015285519283018652600b5463ffffffff8116845264010000000081046fffffffffffffffffffffffffffffffff16958401959095527401000000000000000000000000000000000000000090940490931693810193909352600c5490830152906040805183516bffffffffffffffffffffffff908116825260208086015173ffffffffffffffffffffffffffffffffffffffff168184015294830151151582840152835163ffffffff16606080840191909152948401516fffffffffffffffffffffffffffffffff1660808301529183015190911660a082015291015160c082015260e0015b60405180910390f35b610428610423366004614a2e565b610992565b005b610428610438366004614a6d565b610a41565b610428610b79565b600d546104669061010090046fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff909116815260200161040c565b6005546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161040c565b6003546104d99060ff1681565b604051901515815260200161040c565b610428610b8b565b6104286104ff366004614aaf565b610caa565b6000546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b61052d60075481565b60405190815260200161040c565b6104a77f000000000000000000000000000000000000000000000000000000000000000081565b610428610570366004614ae6565b610e6b565b610428610583366004614a6d565b610f4c565b610428611078565b6105a361059e366004614b01565b6111b8565b604080516fffffffffffffffffffffffffffffffff93841681529290911660208301520161040c565b6104286105da366004614aaf565b61153f565b6104286105ed366004614a6d565b61187d565b600d546104d99060ff1681565b61042861060d366004614b76565b611985565b610428610620366004614a2e565b611a9d565b61062d611b67565b604080518251815260208084015190820152918101519082015260600161040c565b61042861065d366004614b8f565b611bdc565b610428610670366004614aaf565b611e3b565b6104a77f000000000000000000000000000000000000000000000000000000000000000081565b6104286106aa366004614aaf565b61201e565b6106b76123fc565b60405161040c9190815180516bffffffffffffffffffffffff16825260208082015173ffffffffffffffffffffffffffffffffffffffff169083015260409081015115159082015261010081016fffffffffffffffffffffffffffffffff60208401511660608301526bffffffffffffffffffffffff6040840151166080830152606083015160a0830152608083015160c083015260a083015160e083015292915050565b6104a77f000000000000000000000000000000000000000000000000000000000000000081565b610428610791366004614a6d565b612451565b6104286107a4366004614bd0565b612716565b6001546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b6107dc6107d7366004614b01565b61291d565b60405161040c9190614c58565b6006546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b610428610817366004614a6d565b612a68565b61042861082a366004614a2e565b612bad565b6104d961083d366004614d03565b600260209081526000928352604080842090915290825290205460ff1681565b6108f361086b366004614a6d565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff94909416845260088252928290208251938401835280546fffffffffffffffffffffffffffffffff80821686527001000000000000000000000000000000009091041691840191909152600101549082015290565b6040805182516fffffffffffffffffffffffffffffffff908116825260208085015190911690820152918101519082015260600161040c565b61093f61093a366004614a6d565b612c70565b6040805182516fffffffffffffffffffffffffffffffff9081168252602080850151821690830152838301511691810191909152606080830151908201526080918201519181019190915260a00161040c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109e3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a92576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610adf576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610b89610b84612d97565b612e4a565b565b60045473ffffffffffffffffffffffffffffffffffffffff163314610bdc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610c2d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b60035460ff1615610ce7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff16600003610d33576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040812090610d61612d97565b90506000610d96828460000160109054906101000a90046fffffffffffffffffffffffffffffffff1685600101546001612f92565b9050806fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff161115610e17576040517f27c447850000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8083166004830152861660248201526044015b60405180910390fd5b82546fffffffffffffffffffffffffffffffff91869003828116700100000000000000000000000000000000029290911691909117835560608201516001840155610e6482863387612fe9565b5050505050565b610e99336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b610ecf576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff166101006fffffffffffffffffffffffffffffffff8416908102919091179091556040519081527fb6082fede9c667d0939952970ae580680601d1fc2ec7fe1d8ddf5c1ab4927d5b906020015b60405180910390a150565b60035460ff1615610f89576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f93612d97565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040812080546001808301549495509193610ff892869270010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff169190612f92565b9050806fffffffffffffffffffffffffffffffff16600003611046576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81546fffffffffffffffffffffffffffffffff1682556060830151600183015561107283823387612fe9565b50505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146110ce576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16330361111f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600354600090819060ff16156111fa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d5460ff1615611237576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526000808252602082018190529181018290526060810182905290611263612d97565b9050600085815b818110156113af5788888281811061128457611284614d38565b90506020020160208101906112999190614a6d565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090209093506112cb9085613207565b80519095501561139f576020808601516040808801516060808a015183516fffffffffffffffffffffffffffffffff95861681529586019290925292169083015273ffffffffffffffffffffffffffffffffffffffff8516917fe8310e1de285c70a341b4aa33ea9850fc9e6a2f13d1e4833a99edbbf007a654b910160405180910390a2602085015161135e9088614d96565b96508460600151866113709190614d96565b73ffffffffffffffffffffffffffffffffffffffff841660009081526008602052604081208181556001015595505b6113a881614dc6565b905061126a565b506fffffffffffffffffffffffffffffffff861615611512576005546114219073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691166fffffffffffffffffffffffffffffffff89166132e2565b6005546006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff8a1660248301529182166044820152911690635ceae9c490606401600060405180830381600087803b1580156114d057600080fd5b505af11580156114e4573d6000803e3d6000fd5b50505050856fffffffffffffffffffffffffffffffff166007600082825461150c9190614dfe565b90915550505b6fffffffffffffffffffffffffffffffff851615611534576115348386613459565b505050509250929050565b60035460ff161561157c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff166000036115c8576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260086020526040902080546fffffffffffffffffffffffffffffffff908116908416811015611679576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526fffffffffffffffffffffffffffffffff85166024820152604401610e0e565b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523360248301526fffffffffffffffffffffffffffffffff861660448301527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b15801561174057600080fd5b505af1158015611754573d6000803e3d6000fd5b5050505083816117649190614e11565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff91821617835560078054918616916000906117b5908490614dfe565b90915550506040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84169033907f5bb115afc193c15025432a5b5d0608d8b6191666f532aa1b34172bee74c0c7049060200160405180910390a361182a8261182561350f565b613564565b61107273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016846fffffffffffffffffffffffffffffffff87166135df565b6118ab336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b6118e1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f7902cd1307c545e3f5782172612372bf997a93698917ced12b2f83d86e347d0c90600090a2600061192c612d97565b805173ffffffffffffffffffffffffffffffffffffffff84166020909101819052600980546bffffffffffffffffffffffff166c01000000000000000000000000909202919091179055905061198181612e4a565b5050565b6119b3336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b6119e9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a7640000811115611a2b576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527f97a2b3b447f10c044556f6bee068ba4907d386ce7a2f5ccf193b9e9beabba0c89060200160405180910390a1600980547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff92909216919091179055565b611acb336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b611b01576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405181151581527fa1f4a6e2dfc84e852c5dd5b715b3ed1834e8b6017e6bfb3a59d61dbce99574d29060200160405180910390a1600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b611b8b60405180606001604052806000815260200160008152602001600081525090565b6000611b9561350f565b9050611ba081613635565b82526040808201516bffffffffffffffffffffffff16602080850191909152909101516fffffffffffffffffffffffffffffffff169082015290565b611c0a336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b611c40576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614e3a565b905060075481611d549190614dfe565b821115611dac576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101839052604401610e0e565b505b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611e0d91815260200190565b60405180910390a3611e3673ffffffffffffffffffffffffffffffffffffffff841683836135df565b505050565b60035460ff1615611e78576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff16600003611ec4576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516fffffffffffffffffffffffffffffffff8316815273ffffffffffffffffffffffffffffffffffffffff82169033907fa294b8c659c4fead0fea8156278762692bd09dced6313207eba83a4404d1365e9060200160405180910390a373ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081208054849290611f6a9084906fffffffffffffffffffffffffffffffff16614d96565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550816fffffffffffffffffffffffffffffffff1660076000828254611fc49190614e53565b90915550611981905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633306fffffffffffffffffffffffffffffffff861661367d565b60035460ff161561205b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546fffffffffffffffffffffffffffffffff610100909104811690831610156120d757600d546040517f6d400e380000000000000000000000000000000000000000000000000000000081526101009091046fffffffffffffffffffffffffffffffff908116600483015283166024820152604401610e0e565b336000908152600860205260408120906120ef612d97565b8051604001519091501561212f576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523360248301526fffffffffffffffffffffffffffffffff861660448301527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b1580156121f657600080fd5b505af115801561220a573d6000803e3d6000fd5b50505050600084612242838560000160109054906101000a90046fffffffffffffffffffffffffffffffff1686600101546000612f92565b61224c9190614d96565b83546fffffffffffffffffffffffffffffffff808316700100000000000000000000000000000000029116178455606083015160018501556020830151909150612297908690614d96565b6fffffffffffffffffffffffffffffffff1660208301819052600b80547fffffffffffffffffffffffff00000000000000000000000000000000ffffffff166401000000009092029190911790556122ee82612e4a565b506040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84169033907f5fee80056e42d3f27fe8a849b24eac30fcc58726838c192dbda4bc4dc46a5d3e9060200160405180910390a36123588282613564565b6006546040517f2642e7ed0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8616600482015273ffffffffffffffffffffffffffffffffffffffff858116602483015290911690632642e7ed906044015b600060405180830381600087803b1580156123de57600080fd5b505af11580156123f2573d6000803e3d6000fd5b5050505050505050565b6040805161012081018252600060c0820181815260e083018290526101008301829052825260208201819052918101829052606081018290526080810182905260a081019190915261244c61350f565b905090565b61247f336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b6124b5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116919091179091556005541680156125465761254673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168260006136db565b600654604080517f101d1684000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163101d16849160048083019260209291908290030181865afa1580156125b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125da9190614e66565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155909150612650907f0000000000000000000000000000000000000000000000000000000000000000168260006136db565b6126b173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6132e2565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fa93dadf034ad1899d178bd48d8d0af412f02457dc5e74580e7217fcf1456cea160405160405180910390a3611e36610b84612d97565b612744336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b61277a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166127c7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015612915578484828181106127fa576127fa614d38565b9050604002018036038101906128109190614eb2565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561290e81614dc6565b90506127e0565b505050505050565b6060818067ffffffffffffffff81111561293957612939614e83565b6040519080825280602002602001820160405280156129a957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816129575790505b50915060006129b661350f565b905060005b82811015612a5f57612a31600860008888858181106129dc576129dc614d38565b90506020020160208101906129f19190614a6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083613207565b848281518110612a4357612a43614d38565b602002602001018190525080612a5890614dc6565b90506129bb565b50505092915050565b612a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b612acc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612b19576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612bdb336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b612c11576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527f9620f507aec770d0d1dfc5054ec14baa7cc0fa4d49a042a5feb1e11aa1ccb16790602001610f41565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905273ffffffffffffffffffffffffffffffffffffffff85168252600890529182209091612cc561350f565b82546fffffffffffffffffffffffffffffffff8082168652600180860154939450612d0a93859370010000000000000000000000000000000090049092169190612f92565b6fffffffffffffffffffffffffffffffff1660208401528251612d2e90829061385d565b6fffffffffffffffffffffffffffffffff908116604085015283516020850151612d5d928492811691166138b4565b606084015282516020840151612d8a9183916fffffffffffffffffffffffffffffffff9182169116613925565b6080840152509092915050565b6040805161012081018252600060c0820181815260e083018290526101008301829052825260208201819052918101829052606081018290526080810182905260a0810191909152612de881613951565b15612e4757600b805460208301516fffffffffffffffffffffffffffffffff16640100000000027fffffffffffffffffffffffff000000000000000000000000000000000000000090911663ffffffff4216171790556060810151600c555b90565b80516020015160009073ffffffffffffffffffffffffffffffffffffffff166390d3b379612e7784613635565b6040518263ffffffff1660e01b8152600401612e9591815260200190565b602060405180830381865afa158015612eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed69190614f36565b9050806bffffffffffffffffffffffff1682604001516bffffffffffffffffffffffff1614611981576040516bffffffffffffffffffffffff821681527f5bac5d73010c05db73a6f017d97786be2d011fdeeda45a3ad49ddfd4c4d836ee9060200160405180910390a16bffffffffffffffffffffffff16604091909101819052600b805473ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000909202919091179055565b60006fffffffffffffffffffffffffffffffff841615612fdb57612fd6612fd1856fffffffffffffffffffffffffffffffff1687606001518686613bc1565b613bfd565b612fde565b60005b90505b949350505050565b612ff38484613459565b6040516fffffffffffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff80831691908416907fb81daa514d39133aa6960d430d2f15f0c150cb0e4d51c8ff506080c34985f6009060200160405180910390a36130a973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683306fffffffffffffffffffffffffffffffff871661367d565b6005546006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff871660248301529182166044820152911690635ceae9c4906064016123c4565b60035460009060ff1615613175575060005473ffffffffffffffffffffffffffffffffffffffff838116911614613201565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806131f0575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156131fd57506001613201565b5060005b92915050565b604080516080810182526000808252918101829052606081019190915282546fffffffffffffffffffffffffffffffff80821660208401526001808601546132679386937001000000000000000000000000000000009091041691612f92565b6fffffffffffffffffffffffffffffffff908116606083015260808301516020830151670de0b6b3a76400009261329f929116614f64565b6132a99190614faa565b604082015260208101516132be90839061385d565b60608201516fffffffffffffffffffffffffffffffff918216911611815292915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337c9190614e3a565b9050611072847f095ea7b300000000000000000000000000000000000000000000000000000000856133ae8686614e53565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613c4c565b806fffffffffffffffffffffffffffffffff16600003613477575050565b600082602001516fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16116134b457818360200151036134b7565b60005b6fffffffffffffffffffffffffffffffff1660208401819052600b80547fffffffffffffffffffffffff00000000000000000000000000000000ffffffff166401000000009092029190911790555061198182612e4a565b6040805161012081018252600060c0820181815260e083018290526101008301829052825260208201819052918101829052606081018290526080810182905260a081019190915261356081613951565b5090565b60006135708383613207565b805190915015611e36576020810151604080830151606084015191517f049f16120000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff9384166004820152602481019190915291166044820152606401610e0e565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611e369084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016133d7565b60008160a001516000146136755761367082602001516fffffffffffffffffffffffffffffffff16670de0b6b3a76400008460a00151613d5b565b613201565b600092915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110729085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016133d7565b80158061377b57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137799190614e3a565b155b613807576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610e0e565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611e369084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016133d7565b60006138ad612fd18460800151846fffffffffffffffffffffffffffffffff166138879190614f64565b8551516bffffffffffffffffffffffff166ec097ce7bc90715b34b9f1000000000613d5b565b9392505050565b600081156138fc576138f78460800151846138cf9190614f64565b8551516bffffffffffffffffffffffff166138f2670de0b6b3a764000086614f64565b613d5b565b612fe1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082156138fc576138f7826ec097ce7bc90715b34b9f10000000008660800151866138f29190614f64565b60408051606080820183526009546bffffffffffffffffffffffff808216845273ffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000009092048216602080860191909152600a5460ff16151585870152938652600c5492860192909252600b546fffffffffffffffffffffffffffffffff6401000000008204169386019390935274010000000000000000000000000000000000000000909204168383015260055460065492517fdd07270400000000000000000000000000000000000000000000000000000000815292821660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152600092911690819063dd07270490604401602060405180830381865afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa9190614e3a565b8360a00181815250508073ffffffffffffffffffffffffffffffffffffffff16639ed384f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015613afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b229190614f36565b6bffffffffffffffffffffffff16608084015250600b5463ffffffff908116420390811615613bbb57600191506000613b748263ffffffff1685604001518660600151613e669092919063ffffffff16565b9050613b9e612fd18286602001516fffffffffffffffffffffffffffffffff168760600151613d5b565b6fffffffffffffffffffffffffffffffff16602085015260608401525b50919050565b6000613bce858585613d5b565b9050818015613bed575060008380613be857613be8614f7b565b858709115b15612fe157612fde600182614e53565b60006fffffffffffffffffffffffffffffffff821115613560576040517fe0fb6a7c00000000000000000000000000000000000000000000000000000000815260048101839052602401610e0e565b6000613cae826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613eb19092919063ffffffff16565b9050805160001480613ccf575080806020019051810190613ccf9190614fe5565b611e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610e0e565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003613db357838281613da957613da9614f7b565b04925050506138ad565b838110613dfd576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610e0e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000806301e13380613e866bffffffffffffffffffffffff851686614f64565b613e909190614faa565b9050613ea8612e47613ea183613ec0565b8790613f27565b95945050505050565b6060612fe18484600085613f36565b600081680736ea4425c11ac630811115613f09576040517f1af63aca00000000000000000000000000000000000000000000000000000000815260048101849052602401610e0e565b6714057b7ef767814f8102612fe1670de0b6b3a7640000820461404f565b60006138ad612e4784846140be565b606082471015613fc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610e0e565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ff19190615026565b60006040518083038185875af1925050503d806000811461402e576040519150601f19603f3d011682016040523d82523d6000602084013e614033565b606091505b5091509150614044878383876141c5565b979650505050505050565b600081680a688906bd8affffff811115614098576040517fb3b6ba1f00000000000000000000000000000000000000000000000000000000815260048101849052602401610e0e565b60006140b0670de0b6b3a7640000604084901b614faa565b9050612fe1612e4782614265565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050806000036141105750670de0b6b3a764000090049050613201565b670de0b6b3a7640000811061415b576040517f5173648d0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610e0e565b6000670de0b6b3a7640000858709620400008185030493109091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b6060831561425b5782516000036142545773ffffffffffffffffffffffffffffffffffffffff85163b614254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e0e565b5081612fe1565b612fe183836149d9565b7780000000000000000000000000000000000000000000000067ff00000000000000821615614386576780000000000000008216156142ad5768016a09e667f3bcc9090260401c5b6740000000000000008216156142cc576801306fe0a31b7152df0260401c5b6720000000000000008216156142eb576801172b83c7d517adce0260401c5b67100000000000000082161561430a5768010b5586cf9890f62a0260401c5b670800000000000000821615614329576801059b0d31585743ae0260401c5b67040000000000000082161561434857680102c9a3e778060ee70260401c5b6702000000000000008216156143675768010163da9fb33356d80260401c5b67010000000000000082161561438657680100b1afa5abcbed610260401c5b66ff0000000000008216156144855766800000000000008216156143b35768010058c86da1c09ea20260401c5b66400000000000008216156143d1576801002c605e2e8cec500260401c5b66200000000000008216156143ef57680100162f3904051fa10260401c5b661000000000000082161561440d576801000b175effdc76ba0260401c5b660800000000000082161561442b57680100058ba01fb9f96d0260401c5b66040000000000008216156144495768010002c5cc37da94920260401c5b6602000000000000821615614467576801000162e525ee05470260401c5b66010000000000008216156144855768010000b17255775c040260401c5b65ff000000000082161561457b57658000000000008216156144b0576801000058b91b5bc9ae0260401c5b654000000000008216156144cd57680100002c5c89d5ec6d0260401c5b652000000000008216156144ea5768010000162e43f4f8310260401c5b6510000000000082161561450757680100000b1721bcfc9a0260401c5b650800000000008216156145245768010000058b90cf1e6e0260401c5b65040000000000821615614541576801000002c5c863b73f0260401c5b6502000000000082161561455e57680100000162e430e5a20260401c5b6501000000000082161561457b576801000000b1721835510260401c5b64ff00000000821615614668576480000000008216156145a457680100000058b90c0b490260401c5b6440000000008216156145c05768010000002c5c8601cc0260401c5b6420000000008216156145dc576801000000162e42fff00260401c5b6410000000008216156145f85768010000000b17217fbb0260401c5b640800000000821615614614576801000000058b90bfce0260401c5b64040000000082161561463057680100000002c5c85fe30260401c5b64020000000082161561464c5768010000000162e42ff10260401c5b64010000000082161561466857680100000000b17217f80260401c5b63ff00000082161561474c57638000000082161561468f5768010000000058b90bfc0260401c5b63400000008216156146aa576801000000002c5c85fe0260401c5b63200000008216156146c557680100000000162e42ff0260401c5b63100000008216156146e0576801000000000b17217f0260401c5b63080000008216156146fb57680100000000058b90c00260401c5b63040000008216156147165768010000000002c5c8600260401c5b6302000000821615614731576801000000000162e4300260401c5b630100000082161561474c5768010000000000b172180260401c5b62ff00008216156148275762800000821615614771576801000000000058b90c0260401c5b6240000082161561478b57680100000000002c5c860260401c5b622000008216156147a55768010000000000162e430260401c5b621000008216156147bf57680100000000000b17210260401c5b620800008216156147d95768010000000000058b910260401c5b620400008216156147f3576801000000000002c5c80260401c5b6202000082161561480d57680100000000000162e40260401c5b62010000821615614827576801000000000000b1720260401c5b61ff008216156148f95761800082161561484a57680100000000000058b90260401c5b6140008216156148635768010000000000002c5d0260401c5b61200082161561487c576801000000000000162e0260401c5b6110008216156148955768010000000000000b170260401c5b6108008216156148ae576801000000000000058c0260401c5b6104008216156148c757680100000000000002c60260401c5b6102008216156148e057680100000000000001630260401c5b6101008216156148f957680100000000000000b10260401c5b60ff8216156149c257608082161561491a57680100000000000000590260401c5b6040821615614932576801000000000000002c0260401c5b602082161561494a57680100000000000000160260401c5b6010821615614962576801000000000000000b0260401c5b600882161561497a57680100000000000000060260401c5b600482161561499257680100000000000000030260401c5b60028216156149aa57680100000000000000010260401c5b60018216156149c257680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b8151156149e95781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e9190615042565b8015158114614a2b57600080fd5b50565b600060208284031215614a4057600080fd5b81356138ad81614a1d565b73ffffffffffffffffffffffffffffffffffffffff81168114614a2b57600080fd5b600060208284031215614a7f57600080fd5b81356138ad81614a4b565b80356fffffffffffffffffffffffffffffffff81168114614aaa57600080fd5b919050565b60008060408385031215614ac257600080fd5b614acb83614a8a565b91506020830135614adb81614a4b565b809150509250929050565b600060208284031215614af857600080fd5b6138ad82614a8a565b60008060208385031215614b1457600080fd5b823567ffffffffffffffff80821115614b2c57600080fd5b818501915085601f830112614b4057600080fd5b813581811115614b4f57600080fd5b8660208260051b8501011115614b6457600080fd5b60209290920196919550909350505050565b600060208284031215614b8857600080fd5b5035919050565b600080600060608486031215614ba457600080fd5b8335614baf81614a4b565b92506020840135614bbf81614a4b565b929592945050506040919091013590565b600080600060408486031215614be557600080fd5b8335614bf081614a4b565b9250602084013567ffffffffffffffff80821115614c0d57600080fd5b818601915086601f830112614c2157600080fd5b813581811115614c3057600080fd5b8760208260061b8501011115614c4557600080fd5b6020830194508093505050509250925092565b602080825282518282018190526000919060409081850190868401855b82811015614cc6578151805115158552868101516fffffffffffffffffffffffffffffffff908116888701528682015187870152606091820151169085015260809093019290850190600101614c75565b5091979650505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114614aaa57600080fd5b60008060408385031215614d1657600080fd5b8235614d2181614a4b565b9150614d2f60208401614cd3565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6fffffffffffffffffffffffffffffffff818116838216019080821115614dbf57614dbf614d67565b5092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614df757614df7614d67565b5060010190565b8181038181111561320157613201614d67565b6fffffffffffffffffffffffffffffffff828116828216039080821115614dbf57614dbf614d67565b600060208284031215614e4c57600080fd5b5051919050565b8082018082111561320157613201614d67565b600060208284031215614e7857600080fd5b81516138ad81614a4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060408284031215614ec457600080fd5b6040516040810181811067ffffffffffffffff82111715614f0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052614f1a83614cd3565b81526020830135614f2a81614a1d565b60208201529392505050565b600060208284031215614f4857600080fd5b81516bffffffffffffffffffffffff811681146138ad57600080fd5b808202811582820484141761320157613201614d67565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614fe0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215614ff757600080fd5b81516138ad81614a1d565b60005b8381101561501d578181015183820152602001615005565b50506000910152565b60008251615038818460208701615002565b9190910192915050565b6020815260008251806020840152615061816040850160208701615002565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212204afc2d80240b7c432c8a769eaab604c2cba196c26422975fe49c461e7a22718764736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102925760003560e01c80638fb5053e11610160578063be415927116100d8578063d9a349c11161008c578063daeccc7911610071578063daeccc791461082f578063deb906e71461085d578063f46cf7f01461092c57600080fd5b8063d9a349c114610809578063d9a7ed5c1461081c57600080fd5b8063c34c08e5116100bd578063c34c08e5146107a9578063c3e7a9de146107c9578063d495f89f146107e957600080fd5b8063be41592714610783578063bfccf0ec1461079657600080fd5b8063a8cdda061161012f578063b3a3684711610114578063b3a368471461069c578063b74823bb146106af578063be22f5461461075c57600080fd5b8063a8cdda0614610662578063b1a9069c1461067557600080fd5b80638fb5053e146105ff578063939752bd14610612578063a356bad914610625578063a7229fd91461064f57600080fd5b806338a631831161020e5780638112c4af116101c2578063872ec463116101a7578063872ec463146105cc5780638bcd4016146105df5780638f6d0f11146105f257600080fd5b80638112c4af1461058857806381cf90711461059057600080fd5b80634b2adf17116101f35780634b2adf171461053b5780634ffd48f4146105625780637c27383b1461057557600080fd5b806338a63183146105045780634ac8eb5f1461052457600080fd5b80630a5db8a8116102655780631810fe7f1161024a5780631810fe7f146104cc5780631f211405146104e957806325e6b5e8146104f157600080fd5b80630a5db8a814610445578063101d16841461048757600080fd5b80630230192d14610297578063032ef9011461041557806307f184f11461042a578063089771b31461043d575b600080fd5b60408051606080820183526000808352602080840182905292840181905283516080808201865282825281850183905281860183905290830191909152835180830185526009546bffffffffffffffffffffffff80821683526c0100000000000000000000000090910473ffffffffffffffffffffffffffffffffffffffff1682860152600a5460ff1615158287015285519283018652600b5463ffffffff8116845264010000000081046fffffffffffffffffffffffffffffffff16958401959095527401000000000000000000000000000000000000000090940490931693810193909352600c5490830152906040805183516bffffffffffffffffffffffff908116825260208086015173ffffffffffffffffffffffffffffffffffffffff168184015294830151151582840152835163ffffffff16606080840191909152948401516fffffffffffffffffffffffffffffffff1660808301529183015190911660a082015291015160c082015260e0015b60405180910390f35b610428610423366004614a2e565b610992565b005b610428610438366004614a6d565b610a41565b610428610b79565b600d546104669061010090046fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff909116815260200161040c565b6005546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161040c565b6003546104d99060ff1681565b604051901515815260200161040c565b610428610b8b565b6104286104ff366004614aaf565b610caa565b6000546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b61052d60075481565b60405190815260200161040c565b6104a77f000000000000000000000000000000000000000000000000000000000000000081565b610428610570366004614ae6565b610e6b565b610428610583366004614a6d565b610f4c565b610428611078565b6105a361059e366004614b01565b6111b8565b604080516fffffffffffffffffffffffffffffffff93841681529290911660208301520161040c565b6104286105da366004614aaf565b61153f565b6104286105ed366004614a6d565b61187d565b600d546104d99060ff1681565b61042861060d366004614b76565b611985565b610428610620366004614a2e565b611a9d565b61062d611b67565b604080518251815260208084015190820152918101519082015260600161040c565b61042861065d366004614b8f565b611bdc565b610428610670366004614aaf565b611e3b565b6104a77f000000000000000000000000000000000000000000000000000000000000000081565b6104286106aa366004614aaf565b61201e565b6106b76123fc565b60405161040c9190815180516bffffffffffffffffffffffff16825260208082015173ffffffffffffffffffffffffffffffffffffffff169083015260409081015115159082015261010081016fffffffffffffffffffffffffffffffff60208401511660608301526bffffffffffffffffffffffff6040840151166080830152606083015160a0830152608083015160c083015260a083015160e083015292915050565b6104a77f000000000000000000000000000000000000000000000000000000000000000081565b610428610791366004614a6d565b612451565b6104286107a4366004614bd0565b612716565b6001546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b6107dc6107d7366004614b01565b61291d565b60405161040c9190614c58565b6006546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b610428610817366004614a6d565b612a68565b61042861082a366004614a2e565b612bad565b6104d961083d366004614d03565b600260209081526000928352604080842090915290825290205460ff1681565b6108f361086b366004614a6d565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff94909416845260088252928290208251938401835280546fffffffffffffffffffffffffffffffff80821686527001000000000000000000000000000000009091041691840191909152600101549082015290565b6040805182516fffffffffffffffffffffffffffffffff908116825260208085015190911690820152918101519082015260600161040c565b61093f61093a366004614a6d565b612c70565b6040805182516fffffffffffffffffffffffffffffffff9081168252602080850151821690830152838301511691810191909152606080830151908201526080918201519181019190915260a00161040c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109e3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a92576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610adf576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610b89610b84612d97565b612e4a565b565b60045473ffffffffffffffffffffffffffffffffffffffff163314610bdc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610c2d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b60035460ff1615610ce7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff16600003610d33576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040812090610d61612d97565b90506000610d96828460000160109054906101000a90046fffffffffffffffffffffffffffffffff1685600101546001612f92565b9050806fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff161115610e17576040517f27c447850000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8083166004830152861660248201526044015b60405180910390fd5b82546fffffffffffffffffffffffffffffffff91869003828116700100000000000000000000000000000000029290911691909117835560608201516001840155610e6482863387612fe9565b5050505050565b610e99336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b610ecf576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff166101006fffffffffffffffffffffffffffffffff8416908102919091179091556040519081527fb6082fede9c667d0939952970ae580680601d1fc2ec7fe1d8ddf5c1ab4927d5b906020015b60405180910390a150565b60035460ff1615610f89576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f93612d97565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040812080546001808301549495509193610ff892869270010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff169190612f92565b9050806fffffffffffffffffffffffffffffffff16600003611046576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81546fffffffffffffffffffffffffffffffff1682556060830151600183015561107283823387612fe9565b50505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146110ce576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16330361111f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600354600090819060ff16156111fa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d5460ff1615611237576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526000808252602082018190529181018290526060810182905290611263612d97565b9050600085815b818110156113af5788888281811061128457611284614d38565b90506020020160208101906112999190614a6d565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090209093506112cb9085613207565b80519095501561139f576020808601516040808801516060808a015183516fffffffffffffffffffffffffffffffff95861681529586019290925292169083015273ffffffffffffffffffffffffffffffffffffffff8516917fe8310e1de285c70a341b4aa33ea9850fc9e6a2f13d1e4833a99edbbf007a654b910160405180910390a2602085015161135e9088614d96565b96508460600151866113709190614d96565b73ffffffffffffffffffffffffffffffffffffffff841660009081526008602052604081208181556001015595505b6113a881614dc6565b905061126a565b506fffffffffffffffffffffffffffffffff861615611512576005546114219073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691166fffffffffffffffffffffffffffffffff89166132e2565b6005546006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff8a1660248301529182166044820152911690635ceae9c490606401600060405180830381600087803b1580156114d057600080fd5b505af11580156114e4573d6000803e3d6000fd5b50505050856fffffffffffffffffffffffffffffffff166007600082825461150c9190614dfe565b90915550505b6fffffffffffffffffffffffffffffffff851615611534576115348386613459565b505050509250929050565b60035460ff161561157c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff166000036115c8576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260086020526040902080546fffffffffffffffffffffffffffffffff908116908416811015611679576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526fffffffffffffffffffffffffffffffff85166024820152604401610e0e565b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523360248301526fffffffffffffffffffffffffffffffff861660448301527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b15801561174057600080fd5b505af1158015611754573d6000803e3d6000fd5b5050505083816117649190614e11565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff91821617835560078054918616916000906117b5908490614dfe565b90915550506040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84169033907f5bb115afc193c15025432a5b5d0608d8b6191666f532aa1b34172bee74c0c7049060200160405180910390a361182a8261182561350f565b613564565b61107273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016846fffffffffffffffffffffffffffffffff87166135df565b6118ab336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b6118e1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f7902cd1307c545e3f5782172612372bf997a93698917ced12b2f83d86e347d0c90600090a2600061192c612d97565b805173ffffffffffffffffffffffffffffffffffffffff84166020909101819052600980546bffffffffffffffffffffffff166c01000000000000000000000000909202919091179055905061198181612e4a565b5050565b6119b3336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b6119e9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a7640000811115611a2b576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527f97a2b3b447f10c044556f6bee068ba4907d386ce7a2f5ccf193b9e9beabba0c89060200160405180910390a1600980547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff92909216919091179055565b611acb336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b611b01576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405181151581527fa1f4a6e2dfc84e852c5dd5b715b3ed1834e8b6017e6bfb3a59d61dbce99574d29060200160405180910390a1600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b611b8b60405180606001604052806000815260200160008152602001600081525090565b6000611b9561350f565b9050611ba081613635565b82526040808201516bffffffffffffffffffffffff16602080850191909152909101516fffffffffffffffffffffffffffffffff169082015290565b611c0a336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b611c40576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614e3a565b905060075481611d549190614dfe565b821115611dac576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101839052604401610e0e565b505b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611e0d91815260200190565b60405180910390a3611e3673ffffffffffffffffffffffffffffffffffffffff841683836135df565b505050565b60035460ff1615611e78576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff16600003611ec4576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516fffffffffffffffffffffffffffffffff8316815273ffffffffffffffffffffffffffffffffffffffff82169033907fa294b8c659c4fead0fea8156278762692bd09dced6313207eba83a4404d1365e9060200160405180910390a373ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081208054849290611f6a9084906fffffffffffffffffffffffffffffffff16614d96565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550816fffffffffffffffffffffffffffffffff1660076000828254611fc49190614e53565b90915550611981905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633306fffffffffffffffffffffffffffffffff861661367d565b60035460ff161561205b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546fffffffffffffffffffffffffffffffff610100909104811690831610156120d757600d546040517f6d400e380000000000000000000000000000000000000000000000000000000081526101009091046fffffffffffffffffffffffffffffffff908116600483015283166024820152604401610e0e565b336000908152600860205260408120906120ef612d97565b8051604001519091501561212f576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523360248301526fffffffffffffffffffffffffffffffff861660448301527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b1580156121f657600080fd5b505af115801561220a573d6000803e3d6000fd5b50505050600084612242838560000160109054906101000a90046fffffffffffffffffffffffffffffffff1686600101546000612f92565b61224c9190614d96565b83546fffffffffffffffffffffffffffffffff808316700100000000000000000000000000000000029116178455606083015160018501556020830151909150612297908690614d96565b6fffffffffffffffffffffffffffffffff1660208301819052600b80547fffffffffffffffffffffffff00000000000000000000000000000000ffffffff166401000000009092029190911790556122ee82612e4a565b506040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84169033907f5fee80056e42d3f27fe8a849b24eac30fcc58726838c192dbda4bc4dc46a5d3e9060200160405180910390a36123588282613564565b6006546040517f2642e7ed0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8616600482015273ffffffffffffffffffffffffffffffffffffffff858116602483015290911690632642e7ed906044015b600060405180830381600087803b1580156123de57600080fd5b505af11580156123f2573d6000803e3d6000fd5b5050505050505050565b6040805161012081018252600060c0820181815260e083018290526101008301829052825260208201819052918101829052606081018290526080810182905260a081019190915261244c61350f565b905090565b61247f336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b6124b5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116919091179091556005541680156125465761254673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168260006136db565b600654604080517f101d1684000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163101d16849160048083019260209291908290030181865afa1580156125b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125da9190614e66565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155909150612650907f0000000000000000000000000000000000000000000000000000000000000000168260006136db565b6126b173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6132e2565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fa93dadf034ad1899d178bd48d8d0af412f02457dc5e74580e7217fcf1456cea160405160405180910390a3611e36610b84612d97565b612744336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b61277a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166127c7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015612915578484828181106127fa576127fa614d38565b9050604002018036038101906128109190614eb2565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561290e81614dc6565b90506127e0565b505050505050565b6060818067ffffffffffffffff81111561293957612939614e83565b6040519080825280602002602001820160405280156129a957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816129575790505b50915060006129b661350f565b905060005b82811015612a5f57612a31600860008888858181106129dc576129dc614d38565b90506020020160208101906129f19190614a6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083613207565b848281518110612a4357612a43614d38565b602002602001018190525080612a5890614dc6565b90506129bb565b50505092915050565b612a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b612acc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612b19576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612bdb336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b612c11576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527f9620f507aec770d0d1dfc5054ec14baa7cc0fa4d49a042a5feb1e11aa1ccb16790602001610f41565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905273ffffffffffffffffffffffffffffffffffffffff85168252600890529182209091612cc561350f565b82546fffffffffffffffffffffffffffffffff8082168652600180860154939450612d0a93859370010000000000000000000000000000000090049092169190612f92565b6fffffffffffffffffffffffffffffffff1660208401528251612d2e90829061385d565b6fffffffffffffffffffffffffffffffff908116604085015283516020850151612d5d928492811691166138b4565b606084015282516020840151612d8a9183916fffffffffffffffffffffffffffffffff9182169116613925565b6080840152509092915050565b6040805161012081018252600060c0820181815260e083018290526101008301829052825260208201819052918101829052606081018290526080810182905260a0810191909152612de881613951565b15612e4757600b805460208301516fffffffffffffffffffffffffffffffff16640100000000027fffffffffffffffffffffffff000000000000000000000000000000000000000090911663ffffffff4216171790556060810151600c555b90565b80516020015160009073ffffffffffffffffffffffffffffffffffffffff166390d3b379612e7784613635565b6040518263ffffffff1660e01b8152600401612e9591815260200190565b602060405180830381865afa158015612eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed69190614f36565b9050806bffffffffffffffffffffffff1682604001516bffffffffffffffffffffffff1614611981576040516bffffffffffffffffffffffff821681527f5bac5d73010c05db73a6f017d97786be2d011fdeeda45a3ad49ddfd4c4d836ee9060200160405180910390a16bffffffffffffffffffffffff16604091909101819052600b805473ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000909202919091179055565b60006fffffffffffffffffffffffffffffffff841615612fdb57612fd6612fd1856fffffffffffffffffffffffffffffffff1687606001518686613bc1565b613bfd565b612fde565b60005b90505b949350505050565b612ff38484613459565b6040516fffffffffffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff80831691908416907fb81daa514d39133aa6960d430d2f15f0c150cb0e4d51c8ff506080c34985f6009060200160405180910390a36130a973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683306fffffffffffffffffffffffffffffffff871661367d565b6005546006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff871660248301529182166044820152911690635ceae9c4906064016123c4565b60035460009060ff1615613175575060005473ffffffffffffffffffffffffffffffffffffffff838116911614613201565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806131f0575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156131fd57506001613201565b5060005b92915050565b604080516080810182526000808252918101829052606081019190915282546fffffffffffffffffffffffffffffffff80821660208401526001808601546132679386937001000000000000000000000000000000009091041691612f92565b6fffffffffffffffffffffffffffffffff908116606083015260808301516020830151670de0b6b3a76400009261329f929116614f64565b6132a99190614faa565b604082015260208101516132be90839061385d565b60608201516fffffffffffffffffffffffffffffffff918216911611815292915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337c9190614e3a565b9050611072847f095ea7b300000000000000000000000000000000000000000000000000000000856133ae8686614e53565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613c4c565b806fffffffffffffffffffffffffffffffff16600003613477575050565b600082602001516fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16116134b457818360200151036134b7565b60005b6fffffffffffffffffffffffffffffffff1660208401819052600b80547fffffffffffffffffffffffff00000000000000000000000000000000ffffffff166401000000009092029190911790555061198182612e4a565b6040805161012081018252600060c0820181815260e083018290526101008301829052825260208201819052918101829052606081018290526080810182905260a081019190915261356081613951565b5090565b60006135708383613207565b805190915015611e36576020810151604080830151606084015191517f049f16120000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff9384166004820152602481019190915291166044820152606401610e0e565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611e369084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016133d7565b60008160a001516000146136755761367082602001516fffffffffffffffffffffffffffffffff16670de0b6b3a76400008460a00151613d5b565b613201565b600092915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110729085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016133d7565b80158061377b57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137799190614e3a565b155b613807576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610e0e565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611e369084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016133d7565b60006138ad612fd18460800151846fffffffffffffffffffffffffffffffff166138879190614f64565b8551516bffffffffffffffffffffffff166ec097ce7bc90715b34b9f1000000000613d5b565b9392505050565b600081156138fc576138f78460800151846138cf9190614f64565b8551516bffffffffffffffffffffffff166138f2670de0b6b3a764000086614f64565b613d5b565b612fe1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082156138fc576138f7826ec097ce7bc90715b34b9f10000000008660800151866138f29190614f64565b60408051606080820183526009546bffffffffffffffffffffffff808216845273ffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000009092048216602080860191909152600a5460ff16151585870152938652600c5492860192909252600b546fffffffffffffffffffffffffffffffff6401000000008204169386019390935274010000000000000000000000000000000000000000909204168383015260055460065492517fdd07270400000000000000000000000000000000000000000000000000000000815292821660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152600092911690819063dd07270490604401602060405180830381865afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa9190614e3a565b8360a00181815250508073ffffffffffffffffffffffffffffffffffffffff16639ed384f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015613afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b229190614f36565b6bffffffffffffffffffffffff16608084015250600b5463ffffffff908116420390811615613bbb57600191506000613b748263ffffffff1685604001518660600151613e669092919063ffffffff16565b9050613b9e612fd18286602001516fffffffffffffffffffffffffffffffff168760600151613d5b565b6fffffffffffffffffffffffffffffffff16602085015260608401525b50919050565b6000613bce858585613d5b565b9050818015613bed575060008380613be857613be8614f7b565b858709115b15612fe157612fde600182614e53565b60006fffffffffffffffffffffffffffffffff821115613560576040517fe0fb6a7c00000000000000000000000000000000000000000000000000000000815260048101839052602401610e0e565b6000613cae826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613eb19092919063ffffffff16565b9050805160001480613ccf575080806020019051810190613ccf9190614fe5565b611e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610e0e565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003613db357838281613da957613da9614f7b565b04925050506138ad565b838110613dfd576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610e0e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000806301e13380613e866bffffffffffffffffffffffff851686614f64565b613e909190614faa565b9050613ea8612e47613ea183613ec0565b8790613f27565b95945050505050565b6060612fe18484600085613f36565b600081680736ea4425c11ac630811115613f09576040517f1af63aca00000000000000000000000000000000000000000000000000000000815260048101849052602401610e0e565b6714057b7ef767814f8102612fe1670de0b6b3a7640000820461404f565b60006138ad612e4784846140be565b606082471015613fc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610e0e565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ff19190615026565b60006040518083038185875af1925050503d806000811461402e576040519150601f19603f3d011682016040523d82523d6000602084013e614033565b606091505b5091509150614044878383876141c5565b979650505050505050565b600081680a688906bd8affffff811115614098576040517fb3b6ba1f00000000000000000000000000000000000000000000000000000000815260048101849052602401610e0e565b60006140b0670de0b6b3a7640000604084901b614faa565b9050612fe1612e4782614265565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050806000036141105750670de0b6b3a764000090049050613201565b670de0b6b3a7640000811061415b576040517f5173648d0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610e0e565b6000670de0b6b3a7640000858709620400008185030493109091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b6060831561425b5782516000036142545773ffffffffffffffffffffffffffffffffffffffff85163b614254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e0e565b5081612fe1565b612fe183836149d9565b7780000000000000000000000000000000000000000000000067ff00000000000000821615614386576780000000000000008216156142ad5768016a09e667f3bcc9090260401c5b6740000000000000008216156142cc576801306fe0a31b7152df0260401c5b6720000000000000008216156142eb576801172b83c7d517adce0260401c5b67100000000000000082161561430a5768010b5586cf9890f62a0260401c5b670800000000000000821615614329576801059b0d31585743ae0260401c5b67040000000000000082161561434857680102c9a3e778060ee70260401c5b6702000000000000008216156143675768010163da9fb33356d80260401c5b67010000000000000082161561438657680100b1afa5abcbed610260401c5b66ff0000000000008216156144855766800000000000008216156143b35768010058c86da1c09ea20260401c5b66400000000000008216156143d1576801002c605e2e8cec500260401c5b66200000000000008216156143ef57680100162f3904051fa10260401c5b661000000000000082161561440d576801000b175effdc76ba0260401c5b660800000000000082161561442b57680100058ba01fb9f96d0260401c5b66040000000000008216156144495768010002c5cc37da94920260401c5b6602000000000000821615614467576801000162e525ee05470260401c5b66010000000000008216156144855768010000b17255775c040260401c5b65ff000000000082161561457b57658000000000008216156144b0576801000058b91b5bc9ae0260401c5b654000000000008216156144cd57680100002c5c89d5ec6d0260401c5b652000000000008216156144ea5768010000162e43f4f8310260401c5b6510000000000082161561450757680100000b1721bcfc9a0260401c5b650800000000008216156145245768010000058b90cf1e6e0260401c5b65040000000000821615614541576801000002c5c863b73f0260401c5b6502000000000082161561455e57680100000162e430e5a20260401c5b6501000000000082161561457b576801000000b1721835510260401c5b64ff00000000821615614668576480000000008216156145a457680100000058b90c0b490260401c5b6440000000008216156145c05768010000002c5c8601cc0260401c5b6420000000008216156145dc576801000000162e42fff00260401c5b6410000000008216156145f85768010000000b17217fbb0260401c5b640800000000821615614614576801000000058b90bfce0260401c5b64040000000082161561463057680100000002c5c85fe30260401c5b64020000000082161561464c5768010000000162e42ff10260401c5b64010000000082161561466857680100000000b17217f80260401c5b63ff00000082161561474c57638000000082161561468f5768010000000058b90bfc0260401c5b63400000008216156146aa576801000000002c5c85fe0260401c5b63200000008216156146c557680100000000162e42ff0260401c5b63100000008216156146e0576801000000000b17217f0260401c5b63080000008216156146fb57680100000000058b90c00260401c5b63040000008216156147165768010000000002c5c8600260401c5b6302000000821615614731576801000000000162e4300260401c5b630100000082161561474c5768010000000000b172180260401c5b62ff00008216156148275762800000821615614771576801000000000058b90c0260401c5b6240000082161561478b57680100000000002c5c860260401c5b622000008216156147a55768010000000000162e430260401c5b621000008216156147bf57680100000000000b17210260401c5b620800008216156147d95768010000000000058b910260401c5b620400008216156147f3576801000000000002c5c80260401c5b6202000082161561480d57680100000000000162e40260401c5b62010000821615614827576801000000000000b1720260401c5b61ff008216156148f95761800082161561484a57680100000000000058b90260401c5b6140008216156148635768010000000000002c5d0260401c5b61200082161561487c576801000000000000162e0260401c5b6110008216156148955768010000000000000b170260401c5b6108008216156148ae576801000000000000058c0260401c5b6104008216156148c757680100000000000002c60260401c5b6102008216156148e057680100000000000001630260401c5b6101008216156148f957680100000000000000b10260401c5b60ff8216156149c257608082161561491a57680100000000000000590260401c5b6040821615614932576801000000000000002c0260401c5b602082161561494a57680100000000000000160260401c5b6010821615614962576801000000000000000b0260401c5b600882161561497a57680100000000000000060260401c5b600482161561499257680100000000000000030260401c5b60028216156149aa57680100000000000000010260401c5b60018216156149c257680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b8151156149e95781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e9190615042565b8015158114614a2b57600080fd5b50565b600060208284031215614a4057600080fd5b81356138ad81614a1d565b73ffffffffffffffffffffffffffffffffffffffff81168114614a2b57600080fd5b600060208284031215614a7f57600080fd5b81356138ad81614a4b565b80356fffffffffffffffffffffffffffffffff81168114614aaa57600080fd5b919050565b60008060408385031215614ac257600080fd5b614acb83614a8a565b91506020830135614adb81614a4b565b809150509250929050565b600060208284031215614af857600080fd5b6138ad82614a8a565b60008060208385031215614b1457600080fd5b823567ffffffffffffffff80821115614b2c57600080fd5b818501915085601f830112614b4057600080fd5b813581811115614b4f57600080fd5b8660208260051b8501011115614b6457600080fd5b60209290920196919550909350505050565b600060208284031215614b8857600080fd5b5035919050565b600080600060608486031215614ba457600080fd5b8335614baf81614a4b565b92506020840135614bbf81614a4b565b929592945050506040919091013590565b600080600060408486031215614be557600080fd5b8335614bf081614a4b565b9250602084013567ffffffffffffffff80821115614c0d57600080fd5b818601915086601f830112614c2157600080fd5b813581811115614c3057600080fd5b8760208260061b8501011115614c4557600080fd5b6020830194508093505050509250925092565b602080825282518282018190526000919060409081850190868401855b82811015614cc6578151805115158552868101516fffffffffffffffffffffffffffffffff908116888701528682015187870152606091820151169085015260809093019290850190600101614c75565b5091979650505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114614aaa57600080fd5b60008060408385031215614d1657600080fd5b8235614d2181614a4b565b9150614d2f60208401614cd3565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6fffffffffffffffffffffffffffffffff818116838216019080821115614dbf57614dbf614d67565b5092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614df757614df7614d67565b5060010190565b8181038181111561320157613201614d67565b6fffffffffffffffffffffffffffffffff828116828216039080821115614dbf57614dbf614d67565b600060208284031215614e4c57600080fd5b5051919050565b8082018082111561320157613201614d67565b600060208284031215614e7857600080fd5b81516138ad81614a4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060408284031215614ec457600080fd5b6040516040810181811067ffffffffffffffff82111715614f0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052614f1a83614cd3565b81526020830135614f2a81614a1d565b60208201529392505050565b600060208284031215614f4857600080fd5b81516bffffffffffffffffffffffff811681146138ad57600080fd5b808202811582820484141761320157613201614d67565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614fe0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215614ff757600080fd5b81516138ad81614a1d565b60005b8381101561501d578181015183820152602001615005565b50506000910152565b60008251615038818460208701615002565b9190910192915050565b6020815260008251806020840152615061816040850160208701615002565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212204afc2d80240b7c432c8a769eaab604c2cba196c26422975fe49c461e7a22718764736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/package.json b/apps/dapp/package.json index 0dd218305..1a5d27092 100644 --- a/apps/dapp/package.json +++ b/apps/dapp/package.json @@ -5,9 +5,8 @@ "node": ">=20.0.0" }, "scripts": { - "prepare": "yarn typechain:compile && yarn typechain:copy", - "typechain:compile": "cd ../../protocol && yarn compile", - "typechain:copy": "cp -r ../../protocol/typechain ./src/types", + "prepare": "yarn typechain", + "typechain": "typechain --target=ethers-v5 --out-dir src/types/typechain --glob abi/**/*.json", "dev": "vite", "compile": "tsc", "vite:build": "vite build", diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx index 5c7c9ab4a..cfc12b81b 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx @@ -9,7 +9,7 @@ import useV2StrategySnapshotData, { V2SnapshotMetric, V2StrategySnapshot, } from '../hooks/use-dashboardv2-daily-snapshots'; -import { DashboardType } from '../DashboardContent'; +import { ALL_STRATEGIES, DashboardData, isTRVDashboard } from '../DashboardConfig'; type XAxisTickFormatter = (timestamp: number) => string; @@ -67,15 +67,14 @@ const metricFormatters: { [k in V2SnapshotMetric]: MetricFormatter } = { const numberFormatter = new Intl.NumberFormat('en', { maximumFractionDigits: 0, style: 'currency', currency: 'USD' }); const V2StrategyMetricsChart: React.FC<{ - dashboardType: DashboardType; - strategyNames: string[]; + dashboardData: DashboardData; selectedMetric: V2SnapshotMetric; selectedInterval: ChartSupportedTimeInterval; -}> = ({ dashboardType, selectedMetric, selectedInterval, strategyNames }) => { +}> = ({ dashboardData, selectedMetric, selectedInterval }) => { // uncamel-case the metric names const formatMetricName = (name: string) => // format only the selected metric name (the selected metric or all lines in a TRV chart) - name === selectedMetric || dashboardType === DashboardType.TREASURY_RESERVES_VAULT + name === selectedMetric || isTRVDashboard(dashboardData.key) ? name // // insert a space before all caps .replace(/([A-Z][a-z])/g, ' $1') @@ -136,26 +135,30 @@ const V2StrategyMetricsChart: React.FC<{ // we need all strategies for the TRV dashboard anyway we can just as well reuse // what we have and filter client side + // TRV dashboard shows all defined strategies as single lines + // all other dashboards show just the selected strategy key + const chartStrategyNames = isTRVDashboard(dashboardData.key) ? ALL_STRATEGIES : [dashboardData.key]; + const filteredDaily = dailyMetrics - ?.filter((m) => strategyNames.includes(m.strategy.name)) + ?.filter((m) => chartStrategyNames.includes(m.strategy.name)) .sort((a, b) => parseInt(a.timestamp) - parseInt(b.timestamp)) ?? []; const filteredHourly = hourlyMetrics - ?.filter((m) => strategyNames.includes(m.strategy.name)) + ?.filter((m) => chartStrategyNames.includes(m.strategy.name)) .sort((a, b) => parseInt(a.timestamp) - parseInt(b.timestamp)) ?? []; // if we are rendering chart for only one strategy we can use data as is // otherwise we have to transpose and show the selected metric for every strategy const transformedDaily = - strategyNames.length === 1 + chartStrategyNames.length === 1 ? filteredDaily.map(formatV2StrategySnapshot) : transpose(filteredDaily, selectedMetric, formatMetric); const transformedHourly = - strategyNames.length === 1 + chartStrategyNames.length === 1 ? filteredHourly.map(formatV2StrategySnapshot) : transpose(filteredHourly, selectedMetric, formatMetric); @@ -182,21 +185,19 @@ const V2StrategyMetricsChart: React.FC<{ // TRV renders selected metric of all strategies as multiline chart // other dashboards show the selected metric only (single line) - const lines = - dashboardType === DashboardType.TREASURY_RESERVES_VAULT - ? metrics.map((metric, ix) => ({ series: metric, color: colors[ix % colors.length] })) - : [{ series: selectedMetric, color: colors[0] }]; + const lines = isTRVDashboard(dashboardData.key) + ? metrics.map((metric, ix) => ({ series: metric, color: colors[ix % colors.length] })) + : [{ series: selectedMetric, color: colors[0] }]; // for non trv dashboard, pluck all other metrics // (individual assets that make up the metric) // to render as stacked area chart - const stackedItems = - dashboardType !== DashboardType.TREASURY_RESERVES_VAULT - ? // add +1 to skip the first color which is always the selectedMetric - metrics - .filter((m) => m !== selectedMetric) - .map((metric, ix) => ({ series: metric, color: colors[(ix + 1) % colors.length], stackId: 'a' })) - : undefined; + const stackedItems = !isTRVDashboard(dashboardData.key) + ? // add +1 to skip the first color which is always the selectedMetric + metrics + .filter((m) => m !== selectedMetric) + .map((metric, ix) => ({ series: metric, color: colors[(ix + 1) % colors.length], stackId: 'a' })) + : undefined; return ( { - console.debug('DashboardChart with dashboardType: ', dashboardType); +const DashboardChart = ({ dashboardData }: DashboardChartProps) => { + console.debug('DashboardChart with name: ', dashboardData.name); const [searchParams, setSearchParams] = useSearchParams(); const isDesktop = useMediaQuery({ @@ -66,10 +65,9 @@ const DashboardChart = ({ dashboardType, strategyNames }: DashboardChartProps) = diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardConfig.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardConfig.tsx new file mode 100644 index 000000000..47a221438 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardConfig.tsx @@ -0,0 +1,97 @@ +import env from 'constants/env'; + +/* + Note that the StrategyKey matches what's in the contracts + https://github.com/TempleDAO/temple/blob/stage/protocol/contracts/interfaces/v2/strategies/ITempleStrategy.sol#L57 +*/ +export enum StrategyKey { + RAMOS = 'RamosStrategy', + TLC = 'TlcStrategy', + TEMPLEBASE = 'TempleBaseStrategy', + DSRBASE = 'DsrBaseStrategy', + TEMPLO_MAYOR_GNOSIS = 'TemploMayorStrategy', + FOHMO_GNOSIS = 'FohmoStrategy', +} + +// Except this special case for the Treasury Reserves Vault dashboard +export const TRV_KEY = 'TreasuryReservesVault'; +export type TrvKey = typeof TRV_KEY; + +export const ALL_STRATEGIES = Object.values(StrategyKey); + +export const isTRVDashboard = (strategy: StrategyKey | TrvKey) => strategy === TRV_KEY; + +export type DashboardData = { + key: StrategyKey | TrvKey; + name: string; + title: string; + path: string; + description: string; + contractLink: string; +}; + +export const Dashboards: DashboardData[] = [ + { + key: TRV_KEY, + name: 'Treasury Reserves Vault', + title: 'TRV', + path: 'treasuryreservesvault', + description: + 'Treasury Reserves Vault (TRV) coordinates and manages the flow of capital for current Treasury allocations. When funding and management parameters are approved for a Strategy, the TRV will transfer funds e.g. DAI and issue corresponding debt to the Strategy borrower. The current equity of the Strategy is discounted by the loan principal and accrued interest benchmarked to the prevailing rate of the current Base Strategy for the borrowed token.', + contractLink: `${env.etherscan}/address/${env.contracts.treasuryReservesVault}`, + }, + { + key: StrategyKey.RAMOS, + name: 'Ramos', + title: 'RAMOS', + path: 'ramos', + description: + 'Ramos is the automated market operations (AMO) manager that supplies liquidity to the TEMPLE/DAI pool on the Balancer Exchange platform. A bot manages the contract to support TEMPLE trading, reduce price volatility, and earn farming rewards.', + contractLink: `${env.etherscan}/address/${env.contracts.strategies.ramosStrategy}`, + }, + { + key: StrategyKey.TLC, + name: 'TLC', + title: 'TLC', + path: 'tlc', + description: + 'Temple Loving Care (also known as Temple Line of Credit) offers DAI lending for users who supply TEMPLE token as collateral. The value of the collateral is not determined by the current $TEMPLE spot price on the Balancer DEX but by the current Treasury Price Index (TPI). Users may borrow up to 75% loan-to-value (LTV) with the liquidation LTV set to 80%. There are no origination fees and users can withdraw their collateral at any time by repaying the DAI loan. TLC interest rate is a variable APR that is dependent on Debt Ceiling Utilisation. Any accrued interest will increase LTV over time. Borrowers can expect the APR to be set no lower than the prevailing APR for the Treasury DAI Base Strategy. Click here to learn more about Temple Loving Care.', + contractLink: `${env.etherscan}/address/${env.contracts.strategies.tlcStrategy}`, + }, + { + key: StrategyKey.TEMPLEBASE, + name: 'Temple Base', + title: 'TEMPLE BASE', + path: 'templebase', + description: + 'Temple Base strategy is the source of automated market operations (AMO) TEMPLE tokens in the Treasury framework. The TRV facilitates the withdrawal of newly minted TEMPLE tokens from and the issuance of TEMPLE debt to the Temple Base strategy. These TEMPLE tokens will be borrowed by a Treasury Strategy such as Ramos to generate returns. Once these tokens are repaid to the TRV, they will be deposited to the Temple Base strategy to be burned. From the perspective of the TRV, positive returns will be realized when TEMPLE flows to the Temple Base strategy is net positive.', + contractLink: `${env.etherscan}/address/${env.contracts.strategies.templeStrategy}`, + }, + { + key: StrategyKey.DSRBASE, + name: 'DSR Base', + title: 'DSR BASE', + path: 'dsrbase', + description: + 'Idle capital in the Treasury Reserves Vault (TRV) that is not currently deployed to a Strategy borrower will be automatically directed to a Base Strategy to earn yield. Currently, the Base Strategy is set to the Dai Savings Rate (DSR) which makes DAI the base currency of the TRV. The current rate of return for DSR Base also serves as the benchmark interest rate for the Treasury Strategy that borrows DAI from the TRV.', + contractLink: `${env.etherscan}/address/${env.contracts.strategies.dsrBaseStrategy}`, + }, + { + key: StrategyKey.TEMPLO_MAYOR_GNOSIS, + name: 'Templo Mayor', + title: 'TEMPLO MAYOR', + path: 'templomayor', + description: + 'Templo Mayor is an Gnosis Safe Omnibus strategy. An Omnibus Strategy utilises the same bookkeeping structure and approval process, but may entail several related holdings or sub-positions that are managed as a whole. For instance, deposits into different but similar or co-dependent vaults on the same platform or different platforms may be consolidated into one Omnibus Gnosis Safe. Seed allocations of a target risk profile may also be consolidated into an Omnibus Strategy to reduce the noise. Therefore an Omnibus Strategy may provide additional operational efficiency and allow Stakeholders to evaluate a series of related deployments as one composite position rather than as singletons.', + contractLink: `${env.etherscan}/address/${env.contracts.strategies.temploMayorGnosisStrategy}`, + }, + { + key: StrategyKey.FOHMO_GNOSIS, + name: 'Fohmo', + title: 'FOHMO', + path: 'fohmo', + description: + 'FOHMO is a Gnosis Safe that holds the governance tokens for the DSR ecosystem. It is the primary point of interaction for the governance of the DSR ecosystem.', + contractLink: `${env.etherscan}/address/${env.contracts.strategies.fohmoGnosisStrategy}`, + }, +]; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardContent.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardContent.tsx index efd2c5e9a..cc0a7fb1f 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardContent.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardContent.tsx @@ -1,107 +1,31 @@ import styled from 'styled-components'; import * as breakpoints from 'styles/breakpoints'; import DashboardChart from './Chart'; -import { StrategyKey } from './hooks/use-dashboardv2-metrics'; import DashboardMetrics from './Metrics'; import DashboardTransactionHistory from './Table'; import linkSvg from 'assets/icons/link.svg?react'; -import env from 'constants/env'; - -export enum DashboardType { - TREASURY_RESERVES_VAULT, - RAMOS, - TLC, - TEMPLE_BASE, - DSR_BASE, - TEMPLO_MAYOR_GNOSIS, - FOHMO_GNOSIS, -} +import {DashboardData, Dashboards} from './DashboardConfig'; type DashboardContentProps = { - selectedDashboard?: DashboardType; -}; - -type DashboardData = { - [key in DashboardType]: { - title: string; - description: string; - chartStrategyNames: StrategyKey[]; - link: string; - }; + selectedDashboard?: DashboardData; }; -const DashboardContent = ({ selectedDashboard = DashboardType.TREASURY_RESERVES_VAULT }: DashboardContentProps) => { - const dashboardData: DashboardData = { - [DashboardType.TREASURY_RESERVES_VAULT]: { - title: 'Treasury Reserves Vault', - description: - 'Treasury Reserves Vault (TRV) coordinates and manages the flow of capital for current Treasury allocations. When funding and management parameters are approved for a Strategy, the TRV will transfer funds e.g. DAI and issue corresponding debt to the Strategy borrower. The current equity of the Strategy is discounted by the loan principal and accrued interest benchmarked to the prevailing rate of the current Base Strategy for the borrowed token.', - chartStrategyNames: [ - StrategyKey.TEMPLEBASE, - StrategyKey.RAMOS, - StrategyKey.DSRBASE, - StrategyKey.TEMPLO_MAYOR_GNOSIS, - StrategyKey.FOHMO_GNOSIS, - ], - link: `${env.etherscan}/address/${env.contracts.treasuryReservesVault}`, - }, - [DashboardType.RAMOS]: { - title: 'Ramos', - description: - 'Ramos is the automated market operations (AMO) manager that supplies liquidity to the TEMPLE/DAI pool on the Balancer Exchange platform. A bot manages the contract to support TEMPLE trading, reduce price volatility, and earn farming rewards.', - chartStrategyNames: [StrategyKey.RAMOS], - link: `${env.etherscan}/address/${env.contracts.strategies.ramosStrategy}`, - }, - [DashboardType.TLC]: { - title: 'TLC', - description: - 'Temple Loving Care (also known as Temple Line of Credit) offers DAI lending for users who supply TEMPLE token as collateral. The value of the collateral is not determined by the current $TEMPLE spot price on the Balancer DEX but by the current Treasury Price Index (TPI). Users may borrow up to 75% loan-to-value (LTV) with the liquidation LTV set to 80%. There are no origination fees and users can withdraw their collateral at any time by repaying the DAI loan. TLC interest rate is a variable APR that is dependent on Debt Ceiling Utilisation. Any accrued interest will increase LTV over time. Borrowers can expect the APR to be set no lower than the prevailing APR for the Treasury DAI Base Strategy. Click here to learn more about Temple Loving Care.', - chartStrategyNames: [StrategyKey.TLC], - link: `${env.etherscan}/address/${env.contracts.strategies.tlcStrategy}`, - }, - [DashboardType.TEMPLE_BASE]: { - title: 'Temple Base', - description: - 'Temple Base strategy is the source of automated market operations (AMO) TEMPLE tokens in the Treasury framework. The TRV facilitates the withdrawal of newly minted TEMPLE tokens from and the issuance of TEMPLE debt to the Temple Base strategy. These TEMPLE tokens will be borrowed by a Treasury Strategy such as Ramos to generate returns. Once these tokens are repaid to the TRV, they will be deposited to the Temple Base strategy to be burned. From the perspective of the TRV, positive returns will be realized when TEMPLE flows to the Temple Base strategy is net positive.', - chartStrategyNames: [StrategyKey.TEMPLEBASE], - link: `${env.etherscan}/address/${env.contracts.strategies.templeStrategy}`, - }, - [DashboardType.DSR_BASE]: { - title: 'DSR Base', - description: - 'Idle capital in the Treasury Reserves Vault (TRV) that is not currently deployed to a Strategy borrower will be automatically directed to a Base Strategy to earn yield. Currently, the Base Strategy is set to the Dai Savings Rate (DSR) which makes DAI the base currency of the TRV. The current rate of return for DSR Base also serves as the benchmark interest rate for the Treasury Strategy that borrows DAI from the TRV.', - chartStrategyNames: [StrategyKey.DSRBASE], - link: `${env.etherscan}/address/${env.contracts.strategies.dsrBaseStrategy}`, - }, - [DashboardType.TEMPLO_MAYOR_GNOSIS]: { - title: 'Templo Mayor', - description: - 'Templo Mayor is an Gnosis Safe Omnibus strategy. An Omnibus Strategy utilises the same bookkeeping structure and approval process, but may entail several related holdings or sub-positions that are managed as a whole. For instance, deposits into different but similar or co-dependent vaults on the same platform or different platforms may be consolidated into one Omnibus Gnosis Safe. Seed allocations of a target risk profile may also be consolidated into an Omnibus Strategy to reduce the noise. Therefore an Omnibus Strategy may provide additional operational efficiency and allow Stakeholders to evaluate a series of related deployments as one composite position rather than as singletons.', - chartStrategyNames: [StrategyKey.TEMPLO_MAYOR_GNOSIS], - link: `${env.etherscan}/address/${env.contracts.strategies.temploMayorGnosisStrategy}`, - }, - [DashboardType.FOHMO_GNOSIS]: { - title: 'Fohmo', - description: '', - chartStrategyNames: [StrategyKey.FOHMO_GNOSIS], - link: `${env.etherscan}/address/${env.contracts.strategies.fohmoGnosisStrategy}`, - }, - }; +const DEFAULT_DASHBOARD = Dashboards[0]; - const dashboard = dashboardData[selectedDashboard]; +const DashboardContent = ({ selectedDashboard = DEFAULT_DASHBOARD }: DashboardContentProps) => { return (
- {dashboard.title} - window.open(dashboard.link, '_blank')} /> + {selectedDashboard.title} + window.open(selectedDashboard.contractLink, '_blank')} /> - +
- - - + + +
); }; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Metrics/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Metrics/index.tsx index 69d49e3e4..74c881a16 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Metrics/index.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Metrics/index.tsx @@ -4,15 +4,15 @@ import { useMediaQuery } from 'react-responsive'; import styled from 'styled-components'; import * as breakpoints from 'styles/breakpoints'; import { queryPhone } from 'styles/breakpoints'; -import { DashboardType } from '../DashboardContent'; +import { DashboardData } from '../DashboardConfig'; import useDashboardV2Metrics, { ArrangedDashboardMetrics } from '../hooks/use-dashboardv2-metrics'; type DashboardMetricsProps = { - dashboardType: DashboardType; + dashboardData: DashboardData; }; -const DashboardMetrics = ({ dashboardType }: DashboardMetricsProps) => { - const { dashboardMetrics } = useDashboardV2Metrics(dashboardType); +const DashboardMetrics = ({ dashboardData }: DashboardMetricsProps) => { + const { dashboardMetrics } = useDashboardV2Metrics(dashboardData); const isDesktop = useMediaQuery({ query: queryPhone, diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnDataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnDataTable.tsx index 69dcd6976..dc4858c6c 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnDataTable.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnDataTable.tsx @@ -3,7 +3,6 @@ import { LoadingText } from 'components/Pages/Core/components/LoaderVault/common import env from 'constants/env'; import styled from 'styled-components'; import { loading } from 'utils/loading-value'; -import { StrategyKey } from '../hooks/use-dashboardv2-metrics'; import { ArrowButtonUpDown } from 'components/Pages/Ascend/components/Trade/styles'; import { TxHistoryTableHeader } from './TxnHistoryTable'; import { useMediaQuery } from 'react-responsive'; @@ -12,6 +11,7 @@ import { queryMinTablet, queryPhone } from 'styles/breakpoints'; import dropdownIcon from 'assets/icons/dropdown.svg?react'; import { RowFilterDropdown, updateRowDropdownCheckbox } from './RowFilterDropdown'; import { RowFilter } from '../hooks/use-dashboardv2-txHistory'; +import { StrategyKey } from '../DashboardConfig'; export enum TxType { Borrow = 'Borrow', diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnHistoryTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnHistoryTable.tsx index 278650845..152be4f1e 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnHistoryTable.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnHistoryTable.tsx @@ -2,26 +2,20 @@ import { useState, useEffect, useMemo } from 'react'; import type * as CSS from 'csstype'; import styled from 'styled-components'; import { TxHistoryFilterType } from '.'; -import { DashboardType } from '../DashboardContent'; import { format } from 'date-fns'; import { TableRow, TxType, TxnDataTable } from './TxnDataTable'; import { PaginationControl } from './PaginationControl'; -import { - RowFilter, - dashboardTypeToStrategyKey, - useTxHistory, - useTxHistoryAvailableRows, -} from '../hooks/use-dashboardv2-txHistory'; -import { StrategyKey } from '../hooks/use-dashboardv2-metrics'; +import { RowFilter, useTxHistory, useTxHistoryAvailableRows } from '../hooks/use-dashboardv2-txHistory'; import { DropdownCheckOption, DropdownCheckOptions } from './RowFilterDropdown'; import { useMediaQuery } from 'react-responsive'; import { queryMinTablet } from 'styles/breakpoints'; import env from 'constants/env'; import linkSvg from 'assets/icons/link.svg?react'; import { formatNumberWithCommas } from 'utils/formatter'; +import { DashboardData, Dashboards, isTRVDashboard } from '../DashboardConfig'; type Props = { - dashboardType: DashboardType; + dashboardData: DashboardData; txFilter: TxHistoryFilterType; }; @@ -48,7 +42,7 @@ export type TxHistoryTableHeader = { }; const TxnHistoryTable = (props: Props) => { - const { dashboardType, txFilter } = props; + const { dashboardData, txFilter } = props; const [currentPage, setCurrentPage] = useState(1); const [rowsPerPage, setRowsPerPage] = useState(10); const [blockNumber, setBlockNumber] = useState(0); @@ -56,14 +50,7 @@ const TxnHistoryTable = (props: Props) => { const isBiggerThanTablet = useMediaQuery({ query: queryMinTablet }); const allStrategyDropdowns = useMemo( - () => [ - { label: StrategyKey.RAMOS, checked: false }, - { label: StrategyKey.TLC, checked: false }, - { label: StrategyKey.TEMPLEBASE, checked: false }, - { label: StrategyKey.DSRBASE, checked: false }, - { label: StrategyKey.TEMPLO_MAYOR_GNOSIS, checked: false }, - { label: StrategyKey.FOHMO_GNOSIS, checked: false }, - ], + () => Dashboards.map((dashboard) => ({ label: dashboard.key, checked: false })), [] ); @@ -174,7 +161,7 @@ const TxnHistoryTable = (props: Props) => { }; useEffect(() => { - const selectedStrategy = dashboardTypeToStrategyKey(dashboardType); + const selectedStrategy = dashboardData.key; setTableHeaders((prevState) => { // When user changes dashboard url: // 1. reset page @@ -191,10 +178,9 @@ const TxnHistoryTable = (props: Props) => { return { ...prevStateHeader, orderDesc: undefined, - dropdownOptions: - selectedStrategy === StrategyKey.ALL - ? allStrategyDropdowns - : [{ label: selectedStrategy, checked: true }], + dropdownOptions: isTRVDashboard(selectedStrategy) + ? allStrategyDropdowns + : [{ label: selectedStrategy, checked: true }], }; } // 3.2 reset all other dropdown values @@ -211,14 +197,14 @@ const TxnHistoryTable = (props: Props) => { }); return newState; }); - }, [dashboardType, allStrategyDropdowns]); + }, [dashboardData.key, allStrategyDropdowns]); useEffect(() => { setCurrentPage(1); }, [rowsPerPage]); const availableRows = useTxHistoryAvailableRows({ - dashboardType, + dashboardData, txFilter, rowFilter, }); @@ -228,7 +214,7 @@ const TxnHistoryTable = (props: Props) => { if (blockNumber === 0 && availableRows.data) setBlockNumber(availableRows.data.blockNumber); const txHistory = useTxHistory({ - dashboardType, + dashboardData, txFilter, rowFilter, offset: (currentPage - 1) * rowsPerPage, @@ -242,7 +228,11 @@ const TxnHistoryTable = (props: Props) => { // Fetch strategies tx data const dataToTable: TableRow[] | undefined = txHistory.data?.map((tx) => { - const amountResponsive = isBiggerThanTablet ? tx.amount : tx.name === TxType.Borrow ? Number(tx.amount) * -1 : tx.amount; + const amountResponsive = isBiggerThanTablet + ? tx.amount + : tx.name === TxType.Borrow + ? Number(tx.amount) * -1 + : tx.amount; const amountFmt = formatNumberWithCommas(amountResponsive); const datetime = format(new Date(Number(tx.timestamp) * 1000), 'yyyy-MM-dd H:mm:ss O'); const dateOnly = format(new Date(Number(tx.timestamp) * 1000), 'yyyy-MM-dd'); diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/index.tsx index 41fa7d451..b6366558f 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/index.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/index.tsx @@ -1,12 +1,11 @@ import { useState } from 'react'; -import { Button as BaseButton } from 'components/Button/Button'; import styled from 'styled-components'; import * as breakpoints from 'styles/breakpoints'; import TxnHistoryTable from './TxnHistoryTable'; -import { DashboardType } from '../DashboardContent'; +import { DashboardData } from '../DashboardConfig'; type DashboardTransactionHistoryProps = { - dashboardType: DashboardType; + dashboardData: DashboardData; }; export enum TxHistoryFilterType { @@ -15,7 +14,7 @@ export enum TxHistoryFilterType { all = 'all', } -const DashboardTransactionHistory = ({ dashboardType }: DashboardTransactionHistoryProps) => { +const DashboardTransactionHistory = ({ dashboardData }: DashboardTransactionHistoryProps) => { const [txFilter, setTxFilter] = useState(TxHistoryFilterType.all); @@ -36,7 +35,7 @@ const DashboardTransactionHistory = ({ dashboardType }: DashboardTransactionHist - + ); diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts index 56893f85a..59bf4944e 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts @@ -3,6 +3,7 @@ import env from 'constants/env'; import { getQueryKey } from 'utils/react-query-helpers'; import { SubGraphResponse } from 'hooks/core/types'; import { fetchGenericSubgraph } from 'utils/subgraph'; +import { StrategyKey } from '../DashboardConfig'; const V2SnapshotMetrics = [ 'totalMarketValueUSD', @@ -44,7 +45,7 @@ const QUERIED_FIELDS = ` export type V2StrategySnapshot = { timestamp: string; timeframe: string; - strategy: { name: string }; + strategy: { name: StrategyKey }; strategyTokens: { [key in (typeof STRATEGY_TOKEN_FIELDS)[number]]: string }[]; } & { [key in V2SnapshotMetric]: string }; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-metrics.ts b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-metrics.ts index 9442f7127..39344481e 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-metrics.ts +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-metrics.ts @@ -1,19 +1,9 @@ import { useQuery } from '@tanstack/react-query'; import millify from 'millify'; import { fetchGenericSubgraph } from 'utils/subgraph'; -import { DashboardType } from '../DashboardContent'; import env from 'constants/env'; import { getQueryKey } from 'utils/react-query-helpers'; - -export enum StrategyKey { - RAMOS = 'RamosStrategy', - TLC = 'TlcStrategy', - TEMPLEBASE = 'TempleBaseStrategy', - DSRBASE = 'DsrBaseStrategy', - TEMPLO_MAYOR_GNOSIS = 'TemploMayorStrategy', - FOHMO_GNOSIS = 'FohmoStrategy', - ALL = 'All', -} +import { DashboardData, StrategyKey, TrvKey, isTRVDashboard } from '../DashboardConfig'; export enum TokenSymbols { DAI = 'DAI', @@ -54,108 +44,21 @@ export interface StrategyMetrics { const CACHE_TTL = 1000 * 60; -export default function useDashboardV2Metrics(dashboardType: DashboardType) { - // TODO: In the future we can refactor this. - // Ideally should not enumerate every strategy but instead do it dynamically - // by e.g. iterating over the StrategyKey enum - // type MetricsMap = { - // [strategy in StrategyKey]: UseQueryResult; - // }; - - const ramosMetrics = useQuery({ - queryKey: getQueryKey.metrics(StrategyKey.RAMOS), - queryFn: async () => { - const metrics = await fetchStrategyMetrics(StrategyKey.RAMOS); - return metrics; - }, - refetchInterval: CACHE_TTL, - staleTime: CACHE_TTL, - }); - - const tlcMetrics = useQuery({ - queryKey: getQueryKey.metrics(StrategyKey.TLC), - queryFn: async () => { - const metrics = await fetchStrategyMetrics(StrategyKey.TLC); - return metrics; - }, - refetchInterval: CACHE_TTL, - staleTime: CACHE_TTL, - }); - - const templeBaseMetrics = useQuery({ - queryKey: getQueryKey.metrics(StrategyKey.TEMPLEBASE), - queryFn: async () => { - const metrics = await fetchStrategyMetrics(StrategyKey.TEMPLEBASE); - return metrics; - }, - refetchInterval: CACHE_TTL, - staleTime: CACHE_TTL, - }); - - const dsrBaseMetrics = useQuery({ - queryKey: getQueryKey.metrics(StrategyKey.DSRBASE), - queryFn: async () => { - const metrics = await fetchStrategyMetrics(StrategyKey.DSRBASE); - return metrics; - }, - refetchInterval: CACHE_TTL, - staleTime: CACHE_TTL, - }); - - const treasuryReservesVaultMetrics = useQuery({ - queryKey: getQueryKey.trvMetrics(DashboardType.TREASURY_RESERVES_VAULT), - queryFn: async () => { - const metrics = await fetchTreasuryReservesVaultMetrics(); - return metrics; - }, - refetchInterval: CACHE_TTL, - staleTime: CACHE_TTL, - }); - - const temploMayorGnosisMetrics = useQuery({ - queryKey: getQueryKey.metrics(StrategyKey.TEMPLO_MAYOR_GNOSIS), +export default function useDashboardV2Metrics(dashboardData: DashboardData) { + const dashboardMetrics = useQuery({ + queryKey: getQueryKey.metricsDashboard(dashboardData.key), queryFn: async () => { - const metrics = await fetchStrategyMetrics(StrategyKey.TEMPLO_MAYOR_GNOSIS); - return metrics; - }, - refetchInterval: CACHE_TTL, - staleTime: CACHE_TTL, - }); + if (isTRVDashboard(dashboardData.key)) { + return getArrangedTreasuryReservesVaultMetrics(await fetchTreasuryReservesVaultMetrics()); + } - const fohmoGnosisMetrics = useQuery({ - queryKey: getQueryKey.metrics(StrategyKey.FOHMO_GNOSIS), - queryFn: async () => { - const metrics = await fetchStrategyMetrics(StrategyKey.FOHMO_GNOSIS); - return metrics; + return getArrangedStrategyMetrics(await fetchStrategyMetrics(dashboardData.key)); }, refetchInterval: CACHE_TTL, staleTime: CACHE_TTL, }); - const dashboardMetrics = useQuery({ - queryKey: getQueryKey.metricsDashboard(dashboardType), - queryFn: () => { - switch (dashboardType) { - case DashboardType.TREASURY_RESERVES_VAULT: - return treasuryReservesVaultMetrics.data && getArrangedTreasuryReservesVaultMetrics(treasuryReservesVaultMetrics.data); - case DashboardType.TLC: - return tlcMetrics.data && getArrangedStrategyMetrics(tlcMetrics.data); - case DashboardType.RAMOS: - return ramosMetrics.data && getArrangedStrategyMetrics(ramosMetrics.data); - case DashboardType.TEMPLE_BASE: - return templeBaseMetrics.data && getArrangedStrategyMetrics(templeBaseMetrics.data); - case DashboardType.DSR_BASE: - return dsrBaseMetrics.data && getArrangedStrategyMetrics(dsrBaseMetrics.data); - case DashboardType.TEMPLO_MAYOR_GNOSIS: - return temploMayorGnosisMetrics.data && getArrangedStrategyMetrics(temploMayorGnosisMetrics.data); - case DashboardType.FOHMO_GNOSIS: - return fohmoGnosisMetrics.data && getArrangedStrategyMetrics(fohmoGnosisMetrics.data); - } - }, - enabled: !!treasuryReservesVaultMetrics.data && !!tlcMetrics.data && !!ramosMetrics.data && !!templeBaseMetrics.data && !!dsrBaseMetrics.data && !!temploMayorGnosisMetrics.data && !!fohmoGnosisMetrics.data - }) - - const fetchStrategyMetrics = async (strategy: StrategyKey): Promise => { + const fetchStrategyMetrics = async (strategy: StrategyKey | TrvKey): Promise => { let metrics = { valueOfHoldings: 0, benchmarkedEquity: 0, diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-txHistory.ts b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-txHistory.ts index e90d08a41..233c8bb02 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-txHistory.ts +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-txHistory.ts @@ -2,12 +2,11 @@ import { fetchGenericSubgraph } from 'utils/subgraph'; import env from 'constants/env'; import { SubGraphResponse } from 'hooks/core/types'; import { TxHistoryFilterType } from '../Table'; -import { DashboardType } from '../DashboardContent'; -import { StrategyKey } from './use-dashboardv2-metrics'; import { TableHeaders, TxHistoryTableHeader } from '../Table/TxnHistoryTable'; import { TxType } from '../Table/TxnDataTable'; import { getQueryKey } from 'utils/react-query-helpers'; import { useQuery } from '@tanstack/react-query'; +import { DashboardData, StrategyKey, isTRVDashboard } from '../DashboardConfig'; type Transactions = { hash: string; @@ -58,7 +57,7 @@ export type RowFilter = { }; export type TxHistoryProps = { - dashboardType: DashboardType; + dashboardData: DashboardData; txFilter: TxHistoryFilterType; rowFilter: RowFilter; offset: number; @@ -68,10 +67,10 @@ export type TxHistoryProps = { }; export type TxHistoryAvailableRowsProps = { - dashboardType: DashboardType; + dashboardData: DashboardData; txFilter: TxHistoryFilterType; rowFilter: RowFilter; -} +}; const txHistoryFilterTypeToSeconds = (filter: TxHistoryFilterType) => { const dateNowSecs = Math.round(Date.now() / 1000); @@ -86,25 +85,6 @@ const txHistoryFilterTypeToSeconds = (filter: TxHistoryFilterType) => { } }; -export const dashboardTypeToStrategyKey = (dType: DashboardType): StrategyKey => { - switch (dType) { - case DashboardType.TLC: - return StrategyKey.TLC; - case DashboardType.RAMOS: - return StrategyKey.RAMOS; - case DashboardType.DSR_BASE: - return StrategyKey.DSRBASE; - case DashboardType.TEMPLE_BASE: - return StrategyKey.TEMPLEBASE; - case DashboardType.TEMPLO_MAYOR_GNOSIS: - return StrategyKey.TEMPLO_MAYOR_GNOSIS; - case DashboardType.FOHMO_GNOSIS: - return StrategyKey.FOHMO_GNOSIS; - default: - return StrategyKey.ALL; - } -}; - const getTableHeaderOrderByType = (tableHeader?: TxHistoryTableHeader) => { if (!tableHeader) return 'timestamp'; switch (tableHeader.name) { @@ -130,20 +110,20 @@ const useTxHistory = (props: TxHistoryProps) => }); const fetchTransactions = async (props: TxHistoryProps): Promise => { - const { dashboardType, blockNumber, offset, limit, txFilter, rowFilter, tableHeaders } = props; + const { dashboardData, blockNumber, offset, limit, txFilter, rowFilter, tableHeaders } = props; - const strategyKey = dashboardTypeToStrategyKey(dashboardType); - const strategyQuery = strategyKey === StrategyKey.ALL ? `` : `strategy_: {name: "${strategyKey}"}`; - const blockNumberQueryParam = blockNumber > 0 ? (`block: { number: ${blockNumber} }`) : ``; + const strategyKey = dashboardData.key; + const strategyQuery = isTRVDashboard(strategyKey) ? `` : `strategy_: {name: "${strategyKey}"}`; + const blockNumberQueryParam = blockNumber > 0 ? `block: { number: ${blockNumber} }` : ``; const paginationQuery = `skip: ${offset} first: ${limit}`; const dateNowSecs = Math.round(Date.now() / 1000); - const typeRowFilterQuery = `${rowFilter.type ? ('name_contains_nocase: "' + rowFilter.type + '"') : ''}`; + const typeRowFilterQuery = `${rowFilter.type ? 'name_contains_nocase: "' + rowFilter.type + '"' : ''}`; const strategyRowFilterQuery = `${ - rowFilter.strategy ? ('strategy_: {name_contains_nocase: "' + rowFilter.strategy + '"}') : '' + rowFilter.strategy ? 'strategy_: {name_contains_nocase: "' + rowFilter.strategy + '"}' : '' }`; - const tokenRowFilterQuery = `${rowFilter.token ? ('token_: {symbol_contains_nocase: "' + rowFilter.token + '"}') : ''}`; + const tokenRowFilterQuery = `${rowFilter.token ? 'token_: {symbol_contains_nocase: "' + rowFilter.token + '"}' : ''}`; const whereQuery = ` ${blockNumberQueryParam} where: { @@ -188,24 +168,24 @@ const fetchTransactions = async (props: TxHistoryProps): Promise = const useTxHistoryAvailableRows = (props: TxHistoryAvailableRowsProps) => useQuery({ queryKey: getQueryKey.txHistoryAvailableRows(props), - queryFn: () => fetchTxHistoryAvailableRows(props) + queryFn: () => fetchTxHistoryAvailableRows(props), }); const fetchTxHistoryAvailableRows = async (props: TxHistoryAvailableRowsProps): Promise => { - const {dashboardType, rowFilter, txFilter} = props; - const strategyKey = dashboardTypeToStrategyKey(dashboardType); - const strategyQuery = strategyKey === StrategyKey.ALL ? `` : `strategy_: {name: "${strategyKey}"}`; + const { dashboardData, rowFilter, txFilter } = props; + const strategyKey = dashboardData.key; + const strategyQuery = isTRVDashboard(strategyKey) ? `` : `strategy_: {name: "${strategyKey}"}`; const dateNowSecs = Math.round(Date.now() / 1000); - const typeRowFilterQuery = `${rowFilter.type ? ('name_contains_nocase: "' + rowFilter.type + '"') : ''}`; + const typeRowFilterQuery = `${rowFilter.type ? 'name_contains_nocase: "' + rowFilter.type + '"' : ''}`; const strategyRowFilterQuery = `${ - rowFilter.strategy ? ('strategy_: {name_contains_nocase: "' + rowFilter.strategy + '"}') : '' + rowFilter.strategy ? 'strategy_: {name_contains_nocase: "' + rowFilter.strategy + '"}' : '' }`; - const tokenRowFilterQuery = `${rowFilter.token ? ('token_: {symbol_contains_nocase: "' + rowFilter.token + '"}') : ''}`; + const tokenRowFilterQuery = `${rowFilter.token ? 'token_: {symbol_contains_nocase: "' + rowFilter.token + '"}' : ''}`; // get the max allowed 1000 records for a more accurate totalPages calculation const whereQuery = `( first: 1000 where: { ${strategyQuery} - timestamp_gt: ${ dateNowSecs - txHistoryFilterTypeToSeconds(txFilter) } + timestamp_gt: ${dateNowSecs - txHistoryFilterTypeToSeconds(txFilter)} ${typeRowFilterQuery} ${strategyRowFilterQuery} ${tokenRowFilterQuery} @@ -238,8 +218,7 @@ const fetchTxHistoryAvailableRows = async (props: TxHistoryAvailableRowsProps): if (rowFilter.type) hasRowFilters = rowFilter.type.length > 0; if (res) { let totalRowCount = 0; - // if (props.txFilter === TxHistoryFilterType.all && strategyKey === StrategyKey.ALL && (rowFilters && rowFilters?.length === 0)) { - if (props.txFilter === TxHistoryFilterType.all && strategyKey === StrategyKey.ALL && !hasRowFilters) { + if (props.txFilter === TxHistoryFilterType.all && isTRVDashboard(strategyKey) && !hasRowFilters) { // if user chooses all transactions, sum the txCountTotal of every strategy, we don't use this // calc for the last30days or lastweek filters because it could show an incorrect number of totalPages totalRowCount = res.metrics[0].strategyTransactionCount; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/index.tsx index 3c33ec445..01b6f09b2 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/index.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/index.tsx @@ -1,7 +1,8 @@ import { Route, Routes, NavLink as BaseNavLink, Navigate, useSearchParams } from 'react-router-dom'; import * as breakpoints from 'styles/breakpoints'; import styled from 'styled-components'; -import DashboardContent, { DashboardType } from './DashboardContent'; +import DashboardContent from './DashboardContent'; +import { Dashboards } from './DashboardConfig'; export const DashboardPage = () => { const [searchParams] = useSearchParams(); @@ -10,41 +11,22 @@ export const DashboardPage = () => { return ( - - TRV - - - RAMOS - - - TLC - - - TEMPLE BASE - - - DSR BASE - - - TEMPLO MAYOR - - - FOHMO - + {Dashboards.map((dashboard) => ( + + {dashboard.title} + + ))} } /> - } - /> - } /> - } /> - } /> - } /> - } /> - } /> + {Dashboards.map((dashboard) => ( + } + /> + ))} @@ -70,7 +52,7 @@ const NavLink = styled(BaseNavLink)` &.active { text-decoration: underline; - color: ${({theme})=> theme.palette.brandLight} + color: ${({ theme }) => theme.palette.brandLight}; } ${breakpoints.phoneToSmallTablet(` diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Legacy/UnstakeOGT.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Legacy/UnstakeOGT.tsx index 6c9b03126..136f0887f 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Legacy/UnstakeOGT.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Legacy/UnstakeOGT.tsx @@ -25,8 +25,6 @@ export const UnstakeOGT = () => { useEffect(() => { const amount = balance.OGTEMPLE.eq(ZERO) ? '' : formatBigNumber(balance.OGTEMPLE); setUnstakeAmount(amount); - // set a test amount - setUnstakeAmount('100'); }, [balance]); useEffect(() => { diff --git a/apps/dapp/src/utils/react-query-helpers.ts b/apps/dapp/src/utils/react-query-helpers.ts index f10a2aed3..dcb6a6abf 100644 --- a/apps/dapp/src/utils/react-query-helpers.ts +++ b/apps/dapp/src/utils/react-query-helpers.ts @@ -1,15 +1,14 @@ -import { DashboardType } from 'components/Pages/Core/DappPages/Dashboard/DashboardContent'; -import { StrategyKey } from 'components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-metrics'; +import { StrategyKey, TrvKey } from 'components/Pages/Core/DappPages/Dashboard/DashboardConfig'; import { TxHistoryAvailableRowsProps, TxHistoryProps } from 'components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-txHistory'; // Centralize all the dApp react query keys in case we need to cancel or invalidate them // through the app, this makes it easier to track them, please add new ones as required export const getQueryKey = { - txHistory: (props: TxHistoryProps) => ['TxHistory', props.dashboardType, props.txFilter, props.rowFilter, props.offset, props.limit, props.blockNumber, props.tableHeaders], - txHistoryAvailableRows: (props: TxHistoryAvailableRowsProps) => ['TxHistoryAvailableRows', props.dashboardType, props.txFilter, props.rowFilter], + txHistory: (props: TxHistoryProps) => ['TxHistory', props.dashboardData, props.txFilter, props.rowFilter, props.offset, props.limit, props.blockNumber, props.tableHeaders], + txHistoryAvailableRows: (props: TxHistoryAvailableRowsProps) => ['TxHistoryAvailableRows', props.dashboardData, props.txFilter, props.rowFilter], metrics: (s?: StrategyKey) => (s ? ['getMetrics', s] : ['getMetrics']), - metricsDashboard: (d: DashboardType) => (['metricsDashboard', d]), - trvMetrics: (d?: DashboardType) => (d ? ['getTreasureReserveMetrics', d] : ['getTreasureReserveMetrics']), + metricsDashboard: (s: StrategyKey | TrvKey) => (['metricsDashboard', s]), + trvMetrics: (s?: StrategyKey) => (s ? ['getTreasureReserveMetrics', s] : ['getTreasureReserveMetrics']), allStrategiesDailySnapshots: () => ['strategyDailySnapshots'], allStrategiesHourlySnapshots: () => ['strategyHourlySnapshots'], }; diff --git a/protocol/contracts/admin/TempleTeamPayments.sol b/protocol/contracts/admin/TempleTeamPayments.sol index 211c4553e..797b833f7 100644 --- a/protocol/contracts/admin/TempleTeamPayments.sol +++ b/protocol/contracts/admin/TempleTeamPayments.sol @@ -15,7 +15,7 @@ contract TempleTeamPayments is Ownable { event Claimed(address indexed member, uint256 amount); - constructor(IERC20 _TEMPLE, uint256 paymentPeriodInSeconds, uint256 startTimestamp) { + constructor(IERC20 _TEMPLE, uint256 paymentPeriodInSeconds, uint256 startTimestamp) Ownable(msg.sender) { roundStartDate = startTimestamp; roundEndDate = startTimestamp + paymentPeriodInSeconds; TEMPLE = _TEMPLE; diff --git a/protocol/contracts/admin/TempleTeamPaymentsFactory.sol b/protocol/contracts/admin/TempleTeamPaymentsFactory.sol index 72c7bf7c7..f1d0ed4e4 100644 --- a/protocol/contracts/admin/TempleTeamPaymentsFactory.sol +++ b/protocol/contracts/admin/TempleTeamPaymentsFactory.sol @@ -37,7 +37,7 @@ contract TempleTeamPaymentsFactory is Ownable { event ImplementationChanged(address indexed newImplementation); event TokenRecovered(address indexed token, uint256 amount); - constructor(address _implementation, uint16 _lastPaidEpoch) { + constructor(address _implementation, uint16 _lastPaidEpoch) Ownable(msg.sender) { templeTeamPaymentsImplementation = _implementation; lastPaidEpoch = _lastPaidEpoch; initialEpoch = _lastPaidEpoch + 1; diff --git a/protocol/contracts/admin/TempleTeamPaymentsV2.sol b/protocol/contracts/admin/TempleTeamPaymentsV2.sol index 9f12a27b1..8513a27aa 100644 --- a/protocol/contracts/admin/TempleTeamPaymentsV2.sol +++ b/protocol/contracts/admin/TempleTeamPaymentsV2.sol @@ -23,7 +23,7 @@ contract TempleTeamPaymentsV2 is Initializable, OwnableUpgradeable { event AllocationSet(address indexed member, uint256 allocation); function initialize(IERC20 _temple) public initializer { - __Ownable_init_unchained(); + __Ownable_init_unchained(msg.sender); temple = _temple; } diff --git a/protocol/contracts/amm/TempleStableAMMRouter.sol b/protocol/contracts/amm/TempleStableAMMRouter.sol index a7f2cd6cd..37755b1bc 100644 --- a/protocol/contracts/amm/TempleStableAMMRouter.sol +++ b/protocol/contracts/amm/TempleStableAMMRouter.sol @@ -38,7 +38,7 @@ contract TempleStableAMMRouter is Ownable { TempleERC20Token _templeToken, ITreasuryIV _templeTreasury, address _defendStable - ) { + ) Ownable(msg.sender) { templeToken = _templeToken; templeTreasury = _templeTreasury; diff --git a/protocol/contracts/amm/TreasuryIV.sol b/protocol/contracts/amm/TreasuryIV.sol index 412d873c2..9660a11b9 100644 --- a/protocol/contracts/amm/TreasuryIV.sol +++ b/protocol/contracts/amm/TreasuryIV.sol @@ -15,7 +15,7 @@ contract TreasuryIV is Ownable { /// @notice intrinsinc value gauranteed by the protocol Price public intrinsicValueRatio; - constructor(uint256 frax, uint256 temple) { + constructor(uint256 frax, uint256 temple) Ownable(msg.sender) { intrinsicValueRatio.frax = frax; intrinsicValueRatio.temple = temple; } diff --git a/protocol/contracts/amo/Ramos.sol b/protocol/contracts/amo/Ramos.sol index 2e33199ee..1cd6d1256 100644 --- a/protocol/contracts/amo/Ramos.sol +++ b/protocol/contracts/amo/Ramos.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.20; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { Pausable } from "@openzeppelin/contracts/security/Pausable.sol"; +import { Pausable } from "@openzeppelin/contracts/utils/Pausable.sol"; import { IRamos } from "contracts/interfaces/amo/IRamos.sol"; import { IRamosTokenVault } from "contracts/interfaces/amo/helpers/IRamosTokenVault.sol"; @@ -192,19 +192,17 @@ contract Ramos is IRamos, TempleElevatedAccess, Pausable { // Remove allowance from the old vault address previousVault = address(tokenVault); if (previousVault != address(0)) { - protocolToken.safeApprove(previousVault, 0); - quoteToken.safeApprove(previousVault, 0); + protocolToken.approve(previousVault, 0); + quoteToken.approve(previousVault, 0); } tokenVault = IRamosTokenVault(vault); // Set max allowance on the new TRV { - protocolToken.safeApprove(vault, 0); - protocolToken.safeIncreaseAllowance(vault, type(uint256).max); + protocolToken.forceApprove(vault, type(uint256).max); - quoteToken.safeApprove(vault, 0); - quoteToken.safeIncreaseAllowance(vault, type(uint256).max); + quoteToken.forceApprove(vault, type(uint256).max); } } @@ -488,7 +486,7 @@ contract Ramos is IRamos, TempleElevatedAccess, Pausable { protocolToken.safeIncreaseAllowance(address(balancerVault), protocolTokenAmount); uint256 quoteTokenAllowance = quoteToken.allowance(address(this), address(balancerVault)); if (quoteTokenAllowance < quoteTokenAmount) { - quoteToken.safeApprove(address(balancerVault), 0); + quoteToken.approve(address(balancerVault), 0); quoteToken.safeIncreaseAllowance(address(balancerVault), quoteTokenAmount); } } diff --git a/protocol/contracts/core/Exposure.sol b/protocol/contracts/core/Exposure.sol index 7b67621f4..e99021be8 100644 --- a/protocol/contracts/core/Exposure.sol +++ b/protocol/contracts/core/Exposure.sol @@ -37,7 +37,7 @@ contract Exposure is Ownable, RebasingERC20 { * All two of these values are immutable: they can only be set once during * construction. */ - constructor(string memory _name, string memory _symbol, IERC20 _revalToken) ERC20(_name, _symbol) { + constructor(string memory _name, string memory _symbol, IERC20 _revalToken) ERC20(_name, _symbol) Ownable(msg.sender) { revalToken = _revalToken; } diff --git a/protocol/contracts/core/JoiningFee.sol b/protocol/contracts/core/JoiningFee.sol index 3c0613784..1c268adf5 100644 --- a/protocol/contracts/core/JoiningFee.sol +++ b/protocol/contracts/core/JoiningFee.sol @@ -17,7 +17,7 @@ contract JoiningFee is Ownable { uint256 public defaultHourlyJoiningFee; mapping(address => uint256) public hourlyJoiningFeeFor; - constructor(uint256 _defaultHourlyJoiningFee) { + constructor(uint256 _defaultHourlyJoiningFee) Ownable(msg.sender) { defaultHourlyJoiningFee = _defaultHourlyJoiningFee; } diff --git a/protocol/contracts/core/MultiOtcOffer.sol b/protocol/contracts/core/MultiOtcOffer.sol index 182e995f9..6ad880610 100644 --- a/protocol/contracts/core/MultiOtcOffer.sol +++ b/protocol/contracts/core/MultiOtcOffer.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.20; // SPDX-License-Identifier: AGPL-3.0-or-later // Temple (core/MultiOtcOffer.sol) -import { Pausable } from "@openzeppelin/contracts/security/Pausable.sol"; +import { Pausable } from "@openzeppelin/contracts/utils/Pausable.sol"; import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import { CommonEventsAndErrors } from "contracts/common/CommonEventsAndErrors.sol"; diff --git a/protocol/contracts/core/OpsManager.sol b/protocol/contracts/core/OpsManager.sol index 93e5807fa..550d0f5e9 100644 --- a/protocol/contracts/core/OpsManager.sol +++ b/protocol/contracts/core/OpsManager.sol @@ -28,7 +28,7 @@ contract OpsManager is Ownable { constructor( IERC20 _templeToken, JoiningFee _joiningFee - ) { + ) Ownable(msg.sender) { templeToken = _templeToken; joiningFee = _joiningFee; diff --git a/protocol/contracts/core/OtcOffer.sol b/protocol/contracts/core/OtcOffer.sol index 51e61f32c..a910057e4 100644 --- a/protocol/contracts/core/OtcOffer.sol +++ b/protocol/contracts/core/OtcOffer.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.20; // SPDX-License-Identifier: AGPL-3.0-or-later // Temple (core/OtcOffer.sol) -import { Pausable } from "@openzeppelin/contracts/security/Pausable.sol"; +import { Pausable } from "@openzeppelin/contracts/utils/Pausable.sol"; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; @@ -74,7 +74,7 @@ contract OtcOffer is Pausable, Ownable { OfferPricingToken _offerPricingToken, uint128 _minValidOfferPrice, uint128 _maxValidOfferPrice - ) { + ) Ownable(msg.sender) { userSellToken = IERC20Metadata(_userSellToken); userBuyToken = IERC20Metadata(_userBuyToken); fundsOwner = _fundsOwner; diff --git a/protocol/contracts/core/RebasingERC20.sol b/protocol/contracts/core/RebasingERC20.sol index 0ea279de4..3c244c82b 100644 --- a/protocol/contracts/core/RebasingERC20.sol +++ b/protocol/contracts/core/RebasingERC20.sol @@ -46,82 +46,39 @@ abstract contract RebasingERC20 is ERC20 { return toTokenAmount(shareBalanceOf[account]); } - /** - * @dev Moves `amount` of tokens from `sender` to `recipient`. - * - * This internal function is equivalent to {transfer}, and can be used to - * e.g. implement automatic token fees, slashing mechanisms, etc. - * - * Emits a {Transfer} event. - * - * Requirements: - * - * - `sender` cannot be the zero address. - * - `recipient` cannot be the zero address. - * - `sender` must have a balance of at least `amount`. - */ - function _transfer( - address sender, - address recipient, - uint256 amount - ) internal virtual override { - require(sender != address(0), "ERC20: transfer from the zero address"); - require(recipient != address(0), "ERC20: transfer to the zero address"); - - uint256 senderBalanceShares = shareBalanceOf[sender]; - uint256 amountShares = toSharesAmount(amount); - - require(senderBalanceShares >= amountShares, "ERC20: transfer amount exceeds balance"); - unchecked { - shareBalanceOf[sender] -= amountShares; + function _update(address from, address to, uint256 value) internal virtual override { + uint256 shares = toSharesAmount(value); + if (from == address(0)) { + // MINT + // Overflow check required: The rest of the code assumes that totalShares never overflows + totalShares += shares; + } else { + // TRANSFER FROM + uint256 fromBalanceShares = shareBalanceOf[from]; + if (fromBalanceShares < shares) { + revert ERC20InsufficientBalance(from, fromBalanceShares, shares); + } + unchecked { + // Overflow not possible: shares <= fromBalanceShares <= totalShares. + shareBalanceOf[from] = fromBalanceShares - shares; + } } - shareBalanceOf[recipient] += amountShares; - - emit Transfer(sender, recipient, amount); - } - - /** @dev Creates `amount` tokens and assigns them to `account`, increasing - * the total supply. - * - * Emits a {Transfer} event with `from` set to the zero address. - * - * Requirements: - * - * - `account` cannot be the zero address. - */ - function _mint(address account, uint256 amount) internal virtual override { - require(account != address(0), "ERC20: mint to the zero address"); - - uint256 amountShares = toSharesAmount(amount); - totalShares += amountShares; - shareBalanceOf[account] += amountShares; - emit Transfer(address(0), account, amount); - } - - /** - * @dev Destroys `amount` tokens from `account`, reducing the - * total supply. - * - * Emits a {Transfer} event with `to` set to the zero address. - * - * Requirements: - * - * - `account` cannot be the zero address. - * - `account` must have at least `amount` tokens. - */ - function _burn(address account, uint256 amount) internal virtual override { - require(account != address(0), "ERC20: burn from the zero address"); - - uint256 accountBalanceShares = shareBalanceOf[account]; - uint256 amountShares = toSharesAmount(amount); - require(accountBalanceShares >= amountShares, "ERC20: burn amount exceeds balance"); - unchecked { - shareBalanceOf[account] = accountBalanceShares - amountShares; + if (to == address(0)) { + // BURN + unchecked { + // Overflow not possible: shares <= totalShares or value <= fromBalanceShares <= totalShares. + totalShares -= shares; + } + } else { + // TRANSFER TO + unchecked { + // Overflow not possible: balance + value is at most totalShares, which we know fits into a uint256. + shareBalanceOf[to] += shares; + } } - totalShares -= amountShares; - emit Transfer(account, address(0), amount); + emit Transfer(from, to, value); } function toTokenAmount(uint sharesAmount) public view returns (uint256 tokenAmount) { diff --git a/protocol/contracts/core/TempleERC20Token.sol b/protocol/contracts/core/TempleERC20Token.sol index 6aa4cefa1..6a7878a45 100644 --- a/protocol/contracts/core/TempleERC20Token.sol +++ b/protocol/contracts/core/TempleERC20Token.sol @@ -4,15 +4,15 @@ pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; -import "@openzeppelin/contracts/security/Pausable.sol"; +import "@openzeppelin/contracts/utils/Pausable.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; contract TempleERC20Token is ERC20, ERC20Burnable, Ownable, AccessControl { bytes32 public constant CAN_MINT = keccak256("CAN_MINT"); - constructor() ERC20("Temple", "TEMPLE") { - _setupRole(DEFAULT_ADMIN_ROLE, owner()); + constructor() ERC20("Temple", "TEMPLE") Ownable(msg.sender) { + _grantRole(DEFAULT_ADMIN_ROLE, owner()); } function mint(address to, uint256 amount) external { diff --git a/protocol/contracts/core/TreasuryFarmingRevenue.sol b/protocol/contracts/core/TreasuryFarmingRevenue.sol index a865b0b9e..abf01b6bd 100644 --- a/protocol/contracts/core/TreasuryFarmingRevenue.sol +++ b/protocol/contracts/core/TreasuryFarmingRevenue.sol @@ -35,7 +35,7 @@ contract TreasuryFarmingRevenue is Ownable { /// @dev factor by which lifetimeAccRevenueScaledByShare is scaled uint256 constant SCALING_FACTOR = 1e18; - constructor(Exposure _exposure) { + constructor(Exposure _exposure) Ownable(msg.sender) { exposure = _exposure; } diff --git a/protocol/contracts/core/Vault.sol b/protocol/contracts/core/Vault.sol index f24fddfda..e305e4416 100644 --- a/protocol/contracts/core/Vault.sol +++ b/protocol/contracts/core/Vault.sol @@ -3,8 +3,9 @@ pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol"; -import "@openzeppelin/contracts/utils/Counters.sol"; +import "@openzeppelin/contracts/utils/cryptography/EIP712.sol"; +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts/utils/Nonces.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "./RebasingERC20.sol"; @@ -12,8 +13,6 @@ import "./Rational.sol"; import "./Exposure.sol"; import "./JoiningFee.sol"; -// import "hardhat/console.sol"; - /** * @title A temple investment vault, allows deposits and withdrawals on a set period (eg. monthly) * @@ -27,12 +26,9 @@ import "./JoiningFee.sol"; * If an account doesn't leave during the join/exit period, their holdings are automaticaly re-invested * into the next vault cycle. */ -contract Vault is EIP712, Ownable, RebasingERC20 { +contract Vault is Nonces, EIP712, Ownable, RebasingERC20 { uint256 constant public ENTER_EXIT_WINDOW_BUFFER = 60 * 5; // 5 minute buffer - using Counters for Counters.Counter; - mapping(address => Counters.Counter) public _nonces; - // solhint-disable-next-line var-name-mixedcase bytes32 public immutable WITHDRAW_FOR_TYPEHASH = keccak256("withdrawFor(address owner,address sender,uint256 amount,uint256 deadline,uint256 nonce)"); @@ -72,7 +68,7 @@ contract Vault is EIP712, Ownable, RebasingERC20 { Rational memory _shareBoostFactory, JoiningFee _joiningFee, uint256 _firstPeriodStartTimestamp - ) EIP712(_name, "1") ERC20(_name, _symbol) { + ) EIP712(_name, "1") ERC20(_name, _symbol) Ownable(msg.sender) { templeToken = _templeToken; templeExposureToken = _templeExposureToken; vaultedTempleAccount = _vaultedTempleAccount; @@ -165,22 +161,6 @@ contract Vault is EIP712, Ownable, RebasingERC20 { return _domainSeparatorV4(); } - /** - * Current nonce for an given address - */ - function nonces(address owner) public view returns (uint256) { - return _nonces[owner].current(); - } - - /** - * "Consume a nonce": return the current value and increment. - */ - function _useNonce(address owner) internal returns (uint256 current) { - Counters.Counter storage nonce = _nonces[owner]; - current = nonce.current(); - nonce.increment(); - } - /** * @notice Deposit temple into a vault */ diff --git a/protocol/contracts/core/VaultEarlyWithdraw.sol b/protocol/contracts/core/VaultEarlyWithdraw.sol index b357079f2..2f0c0c139 100644 --- a/protocol/contracts/core/VaultEarlyWithdraw.sol +++ b/protocol/contracts/core/VaultEarlyWithdraw.sol @@ -1,7 +1,7 @@ pragma solidity ^0.8.4; // SPDX-License-Identifier: AGPL-3.0-or-later -import "@openzeppelin/contracts/security/Pausable.sol"; +import "@openzeppelin/contracts/utils/Pausable.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; @@ -30,7 +30,7 @@ contract VaultEarlyWithdraw is Pausable, Ownable { error InvalidAddress(address _addr); error SendFailed(); - constructor(address _templeTokenAddress, address[] memory _validVaults) { + constructor(address _templeTokenAddress, address[] memory _validVaults) Ownable(msg.sender) { templeToken = IERC20(_templeTokenAddress); for (uint256 i=0; i<_validVaults.length; ++i) { diff --git a/protocol/contracts/core/VaultProxy.sol b/protocol/contracts/core/VaultProxy.sol index e982e1243..62f61aed7 100644 --- a/protocol/contracts/core/VaultProxy.sol +++ b/protocol/contracts/core/VaultProxy.sol @@ -27,7 +27,7 @@ contract VaultProxy is Ownable { IERC20 _temple, TempleStaking _templeStaking, Faith _faith - ) { + ) Ownable(msg.sender) { ogTemple = _ogTemple; temple = _temple; templeStaking = _templeStaking; diff --git a/protocol/contracts/core/VaultedTemple.sol b/protocol/contracts/core/VaultedTemple.sol index 5a8ce18d7..cab3284e8 100644 --- a/protocol/contracts/core/VaultedTemple.sol +++ b/protocol/contracts/core/VaultedTemple.sol @@ -36,7 +36,7 @@ contract VaultedTemple is ILiquidator, Ownable { IERC20 public immutable templeToken; address public immutable templeExposure; - constructor(IERC20 _templeToken, address _templeExposure) { + constructor(IERC20 _templeToken, address _templeExposure) Ownable(msg.sender) { templeToken = _templeToken; templeExposure = _templeExposure; } diff --git a/protocol/contracts/deprecated/Faith.sol b/protocol/contracts/deprecated/Faith.sol index 4d08cbf31..8bca7f534 100644 --- a/protocol/contracts/deprecated/Faith.sol +++ b/protocol/contracts/deprecated/Faith.sol @@ -19,7 +19,7 @@ contract Faith is Ownable { event Gain(address account, uint256 amount); event Loose(address account, uint256 amount); - constructor() { + constructor() Ownable(msg.sender) { // Seed with a single unit of faith, assigned to this contract itself // required as faith bonus are calculated as a % of total supply. Without // this we get div by 0 errors until the first faith is allocated diff --git a/protocol/contracts/deprecated/OGTemple.sol b/protocol/contracts/deprecated/OGTemple.sol index 0e54d0c7e..802a3454e 100644 --- a/protocol/contracts/deprecated/OGTemple.sol +++ b/protocol/contracts/deprecated/OGTemple.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; -import "@openzeppelin/contracts/security/Pausable.sol"; +import "@openzeppelin/contracts/utils/Pausable.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; @@ -14,7 +14,7 @@ import "@openzeppelin/contracts/access/AccessControl.sol"; * It mints and burns OGTemple as users stake/unstake */ contract OGTemple is ERC20, ERC20Burnable, Ownable { - constructor() ERC20("OGTemple", "OG_TEMPLE") {} + constructor() ERC20("OGTemple", "OG_TEMPLE") Ownable(msg.sender) {} function mint(address to, uint256 amount) external onlyOwner { _mint(to, amount); diff --git a/protocol/contracts/deprecated/TempleStaking.sol b/protocol/contracts/deprecated/TempleStaking.sol index 8add43bc9..1297b1e1f 100644 --- a/protocol/contracts/deprecated/TempleStaking.sol +++ b/protocol/contracts/deprecated/TempleStaking.sol @@ -46,7 +46,7 @@ contract TempleStaking is Ownable { IERC20 _TEMPLE, IExitQueue _EXIT_QUEUE, uint256 _epochSizeSeconds, - uint256 _startTimestamp) { + uint256 _startTimestamp) Ownable(msg.sender) { require(_startTimestamp < block.timestamp, "Start timestamp must be in the past"); require(_startTimestamp > (block.timestamp - (24 * 2 * 60 * 60)), "Start timestamp can't be more than 2 days in the past"); diff --git a/protocol/contracts/governance/ElderElection.sol b/protocol/contracts/governance/ElderElection.sol index e71410920..f2799fdd5 100644 --- a/protocol/contracts/governance/ElderElection.sol +++ b/protocol/contracts/governance/ElderElection.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.4; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import "@openzeppelin/contracts/utils/Counters.sol"; +import "@openzeppelin/contracts/utils/Nonces.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; import "./Templar.sol"; @@ -21,11 +21,10 @@ import "./Templar.sol"; * * EIP712 structured data signing supports 'gasless voting' via a relay */ -contract ElderElection is AccessControl { +contract ElderElection is Nonces, AccessControl { bytes32 public constant CAN_NOMINATE = keccak256("CAN_NOMINATE"); - using Counters for Counters.Counter; using SafeERC20 for IERC20; /// @notice The NFT ids (ie discord ids) of the Templars that are candidates for @@ -41,9 +40,6 @@ contract ElderElection is AccessControl { /// @notice the NFT contract for templars Templar public templars; - /// @notice Nonces used in relayed voting requests - mapping(address => Counters.Counter) public nonces; - /// @notice used for relayed signed requests bytes32 immutable DOMAIN_SEPARATOR; @@ -121,7 +117,7 @@ contract ElderElection is AccessControl { hash(req) )); - (address signer, ECDSA.RecoverError err) = ECDSA.tryRecover(digest, signature); + (address signer, ECDSA.RecoverError err,) = ECDSA.tryRecover(digest, signature); if (err != ECDSA.RecoverError.NoError) { revert InvalidSignature(req.account); } @@ -132,15 +128,6 @@ contract ElderElection is AccessControl { _setEndorsements(req.account, req.discordIds); } - /** - * "Consume a nonce": return the current value and increment. - */ - function _useNonce(address _owner) internal returns (uint256 current) { - Counters.Counter storage nonce = nonces[_owner]; - current = nonce.current(); - nonce.increment(); - } - struct EIP712Domain { string name; string version; diff --git a/protocol/contracts/governance/Templar.sol b/protocol/contracts/governance/Templar.sol index 989611ee9..44f9adef6 100644 --- a/protocol/contracts/governance/Templar.sol +++ b/protocol/contracts/governance/Templar.sol @@ -49,7 +49,7 @@ contract Templar is ERC721, AccessControl { ) external onlyRole(CAN_ASSIGN) { if (account == address(0)) revert InvalidAddress(account); - if (_exists(discordId)) { + if (exists(discordId)) { if (ownerOf(discordId) != account) { _transfer(ownerOf(discordId), account, discordId); } @@ -59,11 +59,11 @@ contract Templar is ERC721, AccessControl { } function exists(uint256 discordId) public view returns (bool) { - return _exists(discordId); + return _ownerOf(discordId) != address(0); } function checkExists(uint256 discordId) public view { - if (!_exists(discordId)) { + if (!exists(discordId)) { revert InvalidTemplar(discordId); } } diff --git a/protocol/contracts/v2/strategies/AbstractStrategy.sol b/protocol/contracts/v2/strategies/AbstractStrategy.sol index 0e1533084..99611521c 100644 --- a/protocol/contracts/v2/strategies/AbstractStrategy.sol +++ b/protocol/contracts/v2/strategies/AbstractStrategy.sol @@ -198,10 +198,7 @@ abstract contract AbstractStrategy is ITempleStrategy, TempleElevatedAccess { function _setTokenAllowance(IERC20 token, address spender, uint256 amount) internal { if (amount == token.allowance(address(this), spender)) return; - token.safeApprove(spender, 0); - if (amount > 0) { - token.safeIncreaseAllowance(spender, amount); - } + token.forceApprove(spender, amount); } /** diff --git a/protocol/contracts/v2/strategies/DsrBaseStrategy.sol b/protocol/contracts/v2/strategies/DsrBaseStrategy.sol index 725c8b8ef..28cc968d4 100644 --- a/protocol/contracts/v2/strategies/DsrBaseStrategy.sol +++ b/protocol/contracts/v2/strategies/DsrBaseStrategy.sol @@ -57,7 +57,7 @@ contract DsrBaseStrategy is AbstractStrategy, ITempleBaseStrategy { vat.hope(address(daiJoin)); vat.hope(address(pot)); daiToken = IERC20(_daiToken); - daiToken.safeApprove(address(daiJoin), type(uint256).max); + daiToken.forceApprove(address(daiJoin), type(uint256).max); _updateTrvApprovals(address(0), _treasuryReservesVault); } diff --git a/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol b/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol index bda91b4ee..59902cc2e 100644 --- a/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol +++ b/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol @@ -391,7 +391,7 @@ contract TempleLineOfCredit is ITempleLineOfCredit, TempleElevatedAccess { // Remove allowance from the old TRV address previousTrv = address(treasuryReservesVault); if (previousTrv != address(0)) { - daiToken.safeApprove(previousTrv, 0); + daiToken.approve(previousTrv, 0); } address _trv = address(tlcStrategy.treasuryReservesVault()); @@ -399,8 +399,7 @@ contract TempleLineOfCredit is ITempleLineOfCredit, TempleElevatedAccess { // Set max allowance on the new TRV { - daiToken.safeApprove(_trv, 0); - daiToken.safeIncreaseAllowance(_trv, type(uint256).max); + daiToken.forceApprove(_trv, type(uint256).max); } emit TlcStrategySet(newTlcStrategy, _trv); diff --git a/protocol/contracts/zaps/GenericZap.sol b/protocol/contracts/zaps/GenericZap.sol deleted file mode 100644 index cfe6be17c..000000000 --- a/protocol/contracts/zaps/GenericZap.sol +++ /dev/null @@ -1,684 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -import "./ZapBase.sol"; -import "./libs/Swap.sol"; -import "./interfaces/IBalancerVault.sol"; -import "./interfaces/IUniswapV2Factory.sol"; -import "./interfaces/IUniswapV2Router.sol"; -import "./interfaces/ICurvePool.sol"; -import "./interfaces/ICurveFactory.sol"; - - -contract GenericZap is ZapBase { - - IUniswapV2Router public immutable uniswapV2Router; - ICurveFactory private immutable curveFactory = ICurveFactory(0xB9fC157394Af804a3578134A6585C0dc9cc990d4); - IBalancerVault private immutable balancerVault = IBalancerVault(0xBA12222222228d8Ba445958a75a0704d566BF2C8); - - struct ZapLiquidityRequest { - uint248 firstSwapMinAmountOut; - bool useAltFunction; - uint248 poolSwapMinAmountOut; - bool isOneSidedLiquidityAddition; - address otherToken; - bool shouldTransferResidual; - uint256 minLiquidityOut; - uint256 uniAmountAMin; - uint256 uniAmountBMin; - bytes poolSwapData; - } - - event ZappedIn(address indexed sender, address fromToken, uint256 fromAmount, address toToken, uint256 amountOut); - event ZappedLPUniV2(address indexed recipient, address token0, address token1, uint256 amountA, uint256 amountB); - event TokenRecovered(address token, address to, uint256 amount); - event ZappedLPCurve(address indexed recipient, address fromToken, uint256 liquidity, uint256[] amounts); - event ZappedLiquidityBalancerPool(address indexed recipient, address fromToken, uint256 fromAmount, uint256[] maxAmountsIn); - - constructor ( - address _router - ) { - uniswapV2Router = IUniswapV2Router(_router); - } - - /** - * @notice recover token or ETH - * @param _token token to recover - * @param _to receiver of recovered token - * @param _amount amount to recover - */ - function recoverToken(address _token, address _to, uint256 _amount) external onlyOwner { - require(_to != address(0), "Invalid receiver"); - if (_token == address(0)) { - // this is effectively how OpenZeppelin transfers eth - require(address(this).balance >= _amount, "Address: insufficient balance"); - (bool success,) = _to.call{value: _amount}(""); - require(success, "Address: unable to send value"); - } else { - _transferToken(IERC20(_token), _to, _amount); - } - - emit TokenRecovered(_token, _to, _amount); - } - - /** - * @notice This function zaps ETH or an ERC20 token to another ERC20 token - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _toToken Exit token - * @param _amountOutMin The minimum acceptable quantity of exit ERC20 token to receive - * @param _swapTarget Execution target for the swap - * @param _swapData DEX data - * @return amountOut Amount of exit tokens received - */ - function zapIn( - address _fromToken, - uint256 _fromAmount, - address _toToken, - uint256 _amountOutMin, - address _swapTarget, - bytes memory _swapData - ) external payable returns (uint256) { - return zapInFor(_fromToken, _fromAmount, _toToken, _amountOutMin, msg.sender, _swapTarget, _swapData); - } - - /** - * @notice This function zaps ETH or an ERC20 token into a balancer liquidity pool (one-sided or two-sided) - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _poolId Target balancer pool id - * @param _swapTarget Execution target for the zap swap - * @param _swapData DEX data - * @param _zapLiqRequest Params for liquidity pool exchange - * @param _request Params for liquidity addition in balancer pool - */ - function zapLiquidityBalancerPool( - address _fromToken, - uint256 _fromAmount, - bytes32 _poolId, - address _swapTarget, - bytes memory _swapData, - ZapLiquidityRequest memory _zapLiqRequest, - IBalancerVault.JoinPoolRequest memory _request - ) external payable { - zapLiquidityBalancerPoolFor(_fromToken, _fromAmount, _poolId, msg.sender, _swapTarget, _swapData, _zapLiqRequest, _request); - } - - /** - * @notice This function zaps ETH or an ERC20 token into a curve liquidity pool (one-sided or two-sided) - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _pool Target curve pool - * @param _swapTarget Execution target for the zap swap - * @param _swapData DEX data - * @param _zapLiqRequest Params for liquidity pool exchange - */ - function zapLiquidityCurvePool( - address _fromToken, - uint256 _fromAmount, - address _pool, - address _swapTarget, - bytes memory _swapData, - ZapLiquidityRequest memory _zapLiqRequest - ) external payable { - zapLiquidityCurvePoolFor(_fromToken, _fromAmount, _pool, msg.sender, _swapTarget, _swapData, _zapLiqRequest); - } - - /** - * @notice This function zaps ETH or an ERC20 token into adding liquidity into a uniswap v2 liquidity pool - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _pair Target uniswap v2 pair - * @param _swapTarget Execution target for the zap swap - * @param _swapData DEX data - * @param _zapLiqRequest Params for liquidity pool exchange - */ - function zapLiquidityUniV2( - address _fromToken, - uint256 _fromAmount, - address _pair, - address _swapTarget, - bytes memory _swapData, - ZapLiquidityRequest memory _zapLiqRequest - ) external payable { - zapLiquidityUniV2For(_fromToken, _fromAmount, _pair, msg.sender, _swapTarget, _swapData, _zapLiqRequest); - } - - /** - * @dev Helper function to calculate swap in amount of a token before adding liquidit to uniswap v2 pair - * @param _token Token to swap in - * @param _pair Uniswap V2 Pair token - * @param _amount Amount of token - * @return uint256 Amount to swap - */ - function getAmountToSwap( - address _token, - address _pair, - uint256 _amount - ) external view returns (uint256) { - return Swap.getAmountToSwap(_token, _pair, _amount); - } - - /** - * @dev Helper function to calculate swap in amount of a token before adding liquidit to uniswap v2 pair. - * Alternative version - * @param _reserveIn Pair reserve of incoming token - * @param _userIn Amount of token - */ - function getSwapInAmount( - uint256 _reserveIn, - uint256 _userIn - ) external pure returns (uint256) { - return Swap.calculateSwapInAmount(_reserveIn, _userIn); - } - - /** - * @notice This function zaps ETH or an ERC20 token to another ERC20 token - * @param fromToken The token used for entry (address(0) if ether) - * @param fromAmount The amount of fromToken to zap - * @param toToken Exit token - * @param amountOutMin The minimum acceptable quantity of exit ERC20 token to receive - * @param recipient Recipient of exit tokens - * @param swapTarget Execution target for the swap - * @param swapData DEX data - * @return amountOut Amount of exit tokens received - */ - function zapInFor( - address fromToken, - uint256 fromAmount, - address toToken, - uint256 amountOutMin, - address recipient, - address swapTarget, - bytes memory swapData - ) public payable whenNotPaused returns (uint256 amountOut) { - require(approvedTargets[fromToken][swapTarget] == true, "GenericZaps: Unsupported token/target"); - - _pullTokens(fromToken, fromAmount); - - amountOut = Swap.fillQuote( - fromToken, - fromAmount, - toToken, - swapTarget, - swapData - ); - require(amountOut >= amountOutMin, "GenericZaps: Not enough tokens out"); - - emit ZappedIn(msg.sender, fromToken, fromAmount, toToken, amountOut); - - // transfer token to recipient - SafeERC20.safeTransfer( - IERC20(toToken), - recipient, - amountOut - ); - } - - /** - * @notice This function zaps ETH or an ERC20 token into a balancer liquidity pool (one-sided or two-sided) - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _poolId Target balancer pool id - * @param _recipient Recipient of LP tokens - * @param _swapTarget Execution target for the zap swap - * @param _swapData DEX data - * @param _zapLiqRequest Params for liquidity pool exchange - * @param _request Params for liquidity addition in balancer pool - */ - function zapLiquidityBalancerPoolFor( - address _fromToken, - uint256 _fromAmount, - bytes32 _poolId, - address _recipient, - address _swapTarget, - bytes memory _swapData, - ZapLiquidityRequest memory _zapLiqRequest, - IBalancerVault.JoinPoolRequest memory _request - ) public payable whenNotPaused { - require(approvedTargets[_fromToken][_swapTarget] == true, "GenericZaps: Unsupported token/target"); - - _pullTokens(_fromToken, _fromAmount); - - uint256 tokenBoughtIndex; - uint256 amountBought; - (address[] memory poolTokens,,) = balancerVault.getPoolTokens(_poolId); - bool fromTokenIsPoolAsset = false; - uint i = 0; - for (; i= _zapLiqRequest.firstSwapMinAmountOut, "Insufficient tokens out"); - } - - // swap token into 2 parts. use data from func call args, if not one-sided liquidity addition - if (!_zapLiqRequest.isOneSidedLiquidityAddition) { - uint256 toSwap; - unchecked { - toSwap = amountBought / 2; - amountBought -= toSwap; - } - // use vault as target - SafeERC20.safeIncreaseAllowance(IERC20(poolTokens[tokenBoughtIndex]), address(balancerVault), toSwap); - Executable.execute(address(balancerVault), 0, _zapLiqRequest.poolSwapData); - // ensure min amounts out swapped for other token - require(_zapLiqRequest.poolSwapMinAmountOut <= IERC20(_zapLiqRequest.otherToken).balanceOf(address(this)), - "Insufficient swap output for other token"); - } - - // approve tokens iteratively, ensuring contract has right balance each time - for (i=0; i 0) { - require(IERC20(poolTokens[i]).balanceOf(address(this)) >= _request.maxAmountsIn[i], - "Insufficient asset tokens"); - SafeERC20.safeIncreaseAllowance(IERC20(poolTokens[i]), address(balancerVault), _request.maxAmountsIn[i]); - } - unchecked { i++; } - } - // address(this) cos zaps sending the tokens - balancerVault.joinPool(_poolId, address(this), _recipient, _request); - - emit ZappedLiquidityBalancerPool(_recipient, _fromToken, _fromAmount, _request.maxAmountsIn); - } - - /** - * @notice This function zaps ETH or an ERC20 token into a curve liquidity pool (one-sided or two-sided) - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _pool Target curve pool - * @param _recipient Recipient of LP tokens - * @param _swapTarget Execution target for the zap swap - * @param _swapData DEX data - * @param _zapLiqRequest Params for liquidity pool exchange - */ - function zapLiquidityCurvePoolFor( - address _fromToken, - uint256 _fromAmount, - address _pool, - address _recipient, - address _swapTarget, - bytes memory _swapData, - ZapLiquidityRequest memory _zapLiqRequest - ) public payable whenNotPaused { - - require(approvedTargets[_fromToken][_swapTarget] == true, "GenericZaps: Unsupported token/target"); - - // pull tokens - _pullTokens(_fromToken, _fromAmount); - uint256 nCoins; - if (_zapLiqRequest.useAltFunction) { - (nCoins,) = curveFactory.get_meta_n_coins(_pool); - } else { - nCoins = curveFactory.get_n_coins(_pool); - } - address[] memory coins = new address[](nCoins); - uint256 fromTokenIndex = nCoins; // set wrong index as initial - uint256 otherTokenIndex = nCoins; - uint256 i; - for (i=0; i= _zapLiqRequest.firstSwapMinAmountOut, "FillQuote: Insufficient tokens out"); - } - // to populate coin amounts for liquidity addition - uint256[] memory coinAmounts = new uint256[](nCoins); - // if one-sided liquidity addition - if (_zapLiqRequest.isOneSidedLiquidityAddition) { - coinAmounts[fromTokenIndex] = _fromAmount; - require(approvedTargets[coins[fromTokenIndex]][_pool] == true, "Pool not approved"); - SafeERC20.safeIncreaseAllowance(IERC20(coins[fromTokenIndex]), _pool, _fromAmount); - } else { - // swap coins - // add coins in equal parts. assumes two coins - uint256 amountToSwap; - unchecked { - amountToSwap = _fromAmount / 2; - _fromAmount -= amountToSwap; - } - require(approvedTargets[coins[fromTokenIndex]][_pool] == true, "Pool not approved"); - SafeERC20.safeIncreaseAllowance(IERC20(coins[fromTokenIndex]), _pool, amountToSwap); - uint256 otherTokenBalanceBefore = IERC20(coins[otherTokenIndex]).balanceOf(address(this)); - bytes memory result = Executable.execute(_pool, 0, _zapLiqRequest.poolSwapData); - // reuse amountToSwap variable for amountReceived - amountToSwap = abi.decode(result, (uint256)); - require(_zapLiqRequest.poolSwapMinAmountOut <= amountToSwap, - "Insufficient swap output for other token"); - require(IERC20(coins[otherTokenIndex]).balanceOf(address(this)) - otherTokenBalanceBefore <= amountToSwap, - "Insufficient tokens"); - - // reinit variable to avoid stack too deep - uint256 fromAmount = _fromAmount; - address pool = _pool; - SafeERC20.safeIncreaseAllowance(IERC20(coins[fromTokenIndex]), pool, fromAmount); - SafeERC20.safeIncreaseAllowance(IERC20(coins[otherTokenIndex]), pool, amountToSwap); - - coinAmounts[fromTokenIndex] = fromAmount; - coinAmounts[otherTokenIndex] = amountToSwap; - } - - uint256 liquidity = _addLiquidityCurvePool( - _pool, - _recipient, - _zapLiqRequest.minLiquidityOut, - _zapLiqRequest.useAltFunction, - coinAmounts - ); - - emit ZappedLPCurve(_recipient, _fromToken, liquidity, coinAmounts); - } - - /** - * @notice This function zaps ETH or an ERC20 token into adding liquidity into a uniswap v2 liquidity pool - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _pair Target uniswap v2 pair - * @param _for Recipient of LP tokens - * @param _swapTarget Execution target for the zap swap - * @param _swapData DEX data - * @param _zapLiqRequest Params for liquidity pool exchange - */ - function zapLiquidityUniV2For( - address _fromToken, - uint256 _fromAmount, - address _pair, - address _for, - address _swapTarget, - bytes memory _swapData, - ZapLiquidityRequest memory _zapLiqRequest - ) public payable whenNotPaused { - require(approvedTargets[_fromToken][_swapTarget] == true, "GenericZaps: Unsupported token/target"); - - // pull tokens - _pullTokens(_fromToken, _fromAmount); - - address intermediateToken; - uint256 intermediateAmount; - (address token0, address token1) = Swap.getPairTokens(_pair); - - if (_fromToken != token0 && _fromToken != token1) { - // swap to intermediate - intermediateToken = _zapLiqRequest.otherToken == token0 ? token1 : token0; - intermediateAmount = Swap.fillQuote( - _fromToken, - _fromAmount, - intermediateToken, - _swapTarget, - _swapData - ); - require(intermediateAmount >= _zapLiqRequest.firstSwapMinAmountOut, "Not enough tokens out"); - } else { - intermediateToken = _fromToken; - intermediateAmount = _fromAmount; - } - - (uint256 amountA, uint256 amountB) = _swapTokens(_pair, intermediateToken, intermediateAmount, _zapLiqRequest.poolSwapMinAmountOut); - - SafeERC20.safeIncreaseAllowance(IERC20(token1), address(uniswapV2Router), amountB); - SafeERC20.safeIncreaseAllowance(IERC20(token0), address(uniswapV2Router), amountA); - - _addLiquidityUniV2(_pair, _for, amountA, amountB, _zapLiqRequest.uniAmountAMin, _zapLiqRequest.uniAmountBMin, _zapLiqRequest.shouldTransferResidual); - } - - /** - * @dev Get minimum amounts fo token0 and token1 to tolerate when adding liquidity to uniswap v2 pair - * @param amountADesired Input desired amount of token0 - * @param amountBDesired Input desired amount of token1 - * @param pair Target uniswap v2 pair - * @return amountA Minimum amount of token0 to use when adding liquidity - * @return amountB Minimum amount of token1 to use when adding liquidity - */ - function addLiquidityGetMinAmounts( - uint amountADesired, - uint amountBDesired, - IUniswapV2Pair pair - ) public view returns (uint amountA, uint amountB) { - (uint reserveA, uint reserveB,) = pair.getReserves(); - if (reserveA == 0 && reserveB == 0) { - (amountA, amountB) = (amountADesired, amountBDesired); - } else { - uint amountBOptimal = Swap.quote(amountADesired, reserveA, reserveB); - if (amountBOptimal <= amountBDesired) { - //require(amountBOptimal >= amountBMin, 'TempleStableAMMRouter: INSUFFICIENT_STABLE'); - (amountA, amountB) = (amountADesired, amountBOptimal); - } else { - uint amountAOptimal = Swap.quote(amountBDesired, reserveB, reserveA); - assert(amountAOptimal <= amountADesired); - //require(amountAOptimal >= amountAMin, 'TempleStableAMMRouter: INSUFFICIENT_TEMPLE'); - (amountA, amountB) = (amountAOptimal, amountBDesired); - } - } - } - - function _addLiquidityCurvePool( - address _pool, - address _recipient, - uint256 _minLiquidityOut, - bool _useAltFunction, - uint256[] memory _amounts - ) internal returns (uint256 liquidity) { - bool success; - bytes memory data; - if (_useAltFunction) { - //liquidity = ICurvePool(_pool).add_liquidity(_amounts, _minLiquidityOut, false, _recipient); - data = abi.encodeWithSelector(0x0b4c7e4d, _amounts, _minLiquidityOut, false, _recipient); - // reuse data - (success, data) = _pool.call{value:0}(data); - } else { - //liquidity = ICurvePool(_pool).add_liquidity(_amounts, _minLiquidityOut, _recipient); - data = abi.encodeWithSelector(0xad6d8c4a, _amounts, _minLiquidityOut, _recipient); - // reuse data - (success, data) = _pool.call{value:0}(data); - } - require(success, "Failed adding liquidity"); - liquidity = abi.decode(data, (uint256)); - } - - function _addLiquidityUniV2( - address _pair, - address _recipient, - uint256 _amountA, - uint256 _amountB, - uint256 _amountAMin, - uint256 _amountBMin, - bool _shouldTransferResidual - ) internal { - address tokenA = IUniswapV2Pair(_pair).token0(); - address tokenB = IUniswapV2Pair(_pair).token1(); - // avoid stack too deep - { - // reuse vars. _amountAMin and _amountBMin below are actually amountA and amountB added to liquidity after external call - (_amountAMin, _amountBMin,) = uniswapV2Router.addLiquidity( - tokenA, - tokenB, - _amountA, - _amountB, - _amountAMin, - _amountBMin, - _recipient, - DEADLINE - ); - - emit ZappedLPUniV2(_recipient, tokenA, tokenB, _amountAMin, _amountBMin); - - // transfer residual - if (_shouldTransferResidual) { - _transferResidual(_recipient, tokenA, tokenB, _amountA, _amountB, _amountAMin, _amountBMin); - } - } - } - - function _transferResidual( - address _recipient, - address _tokenA, - address _tokenB, - uint256 _amountA, - uint256 _amountB, - uint256 _amountAActual, - uint256 _amountBActual - ) internal { - if (_amountA > _amountAActual) { - _transferToken(IERC20(_tokenA), _recipient, _amountA - _amountAActual); - } - - if (_amountB > _amountBActual) { - _transferToken(IERC20(_tokenB), _recipient, _amountB - _amountBActual); - } - } - - function _swapTokens( - address _pair, - address _fromToken, - uint256 _fromAmount, - uint256 _amountOutMin - ) internal returns (uint256 amountA, uint256 amountB) { - IUniswapV2Pair pair = IUniswapV2Pair(_pair); - address token0 = pair.token0(); - address token1 = pair.token1(); - - (uint256 res0, uint256 res1,) = pair.getReserves(); - if (_fromToken == token0) { - uint256 amountToSwap = Swap.calculateSwapInAmount(res0, _fromAmount); - //if no reserve or a new pair is created - if (amountToSwap == 0) amountToSwap = _fromAmount / 2; - - amountB = _swapErc20ToErc20( - _fromToken, - token1, - amountToSwap, - _amountOutMin - ); - amountA = _fromAmount - amountToSwap; - } else { - uint256 amountToSwap = Swap.calculateSwapInAmount(res1, _fromAmount); - //if no reserve or a new pair is created - if (amountToSwap == 0) amountToSwap = _fromAmount / 2; - - amountA = _swapErc20ToErc20( - _fromToken, - token0, - amountToSwap, - _amountOutMin - ); - amountB = _fromAmount - amountToSwap; - } - } - - function _fillQuotePool( - address _fromToken, - uint256 _fromAmount, - address[] memory _coins, - address _swapTarget, - bytes memory _swapData - ) internal returns (uint256, uint256){ - uint256 valueToSend; - if (_fromToken == address(0)) { - require( - _fromAmount > 0 && msg.value == _fromAmount, - "Invalid _amount: Input ETH mismatch" - ); - valueToSend = _fromAmount; - } else { - SafeERC20.safeIncreaseAllowance(IERC20(_fromToken), _swapTarget, _fromAmount); - } - uint256 nCoins = _coins.length; - uint256[] memory balancesBefore = new uint256[](nCoins); - uint256 i = 0; - for (; i balancesBefore[i]) { - tokenBoughtIndex = i; - break; - } - unchecked { i++; } - } - require(tokenBoughtIndex != nCoins, "Invalid swap"); - - return (tokenBoughtIndex, bal - balancesBefore[tokenBoughtIndex]); - } - - /** - @notice This function is used to swap ERC20 <> ERC20 - @param _fromToken The token address to swap from. - @param _toToken The token address to swap to. - @param _amountIn The amount of tokens to swap - @param _amountOutMin Minimum amount of tokens out - @return tokenBought The amount of tokens bought - */ - function _swapErc20ToErc20( - address _fromToken, - address _toToken, - uint256 _amountIn, - uint256 _amountOutMin - ) internal returns (uint256 tokenBought) { - if (_fromToken == _toToken) { - return _amountIn; - } - - SafeERC20.safeIncreaseAllowance(IERC20(_fromToken), address(uniswapV2Router), _amountIn); - - IUniswapV2Factory uniV2Factory = IUniswapV2Factory( - uniswapV2Router.factory() - ); - address pair = uniV2Factory.getPair( - _fromToken, - _toToken - ); - require(pair != address(0), "No Swap Available"); - address[] memory path = new address[](2); - path[0] = _fromToken; - path[1] = _toToken; - - tokenBought = uniswapV2Router - .swapExactTokensForTokens( - _amountIn, - _amountOutMin, - path, - address(this), - DEADLINE - )[path.length - 1]; - - require(tokenBought >= _amountOutMin, "Error Swapping Tokens 2"); - } -} \ No newline at end of file diff --git a/protocol/contracts/zaps/TempleZaps.sol b/protocol/contracts/zaps/TempleZaps.sol deleted file mode 100644 index 9fac07dad..000000000 --- a/protocol/contracts/zaps/TempleZaps.sol +++ /dev/null @@ -1,430 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; -import "./ZapBase.sol"; -import "./libs/Swap.sol"; -import "./interfaces/ITempleStableRouter.sol"; -import "./interfaces/IGenericZaps.sol"; -import "./interfaces/IVault.sol"; - - -contract TempleZaps is ZapBase { - using SafeERC20 for IERC20; - - address public immutable temple; - ITempleStableRouter public templeRouter; - IGenericZaps public zaps; - - mapping(address => bool) public supportedStables; - - struct TempleLiquidityParams { - uint256 amountAMin; - uint256 amountBMin; - uint256 lpSwapMinAmountOut; - address stableToken; - bool transferResidual; - } - - event SetZaps(address zaps); - event SetTempleRouter(address router); - event ZappedTemplePlusFaithInVault(address indexed sender, address fromToken, uint256 fromAmount, uint112 faithAmount, uint256 boostedAmount); - event ZappedTempleInVault(address indexed sender, address fromToken, uint256 fromAmount, uint256 templeAmount); - event TokenRecovered(address token, address to, uint256 amount); - event ZappedInTempleLP(address indexed recipient, address fromAddress, uint256 fromAmount, uint256 amountA, uint256 amountB); - - constructor( - address _temple, - address _templeRouter, - address _zaps - ) { - temple = _temple; - templeRouter = ITempleStableRouter(_templeRouter); - zaps = IGenericZaps(_zaps); - } - - /** - * set generic zaps contract - * @param _zaps zaps contract - */ - function setZaps(address _zaps) external onlyOwner { - zaps = IGenericZaps(_zaps); - - emit SetZaps(_zaps); - } - - /** - * set temple stable router - * @param _router temple router - */ - function setTempleRouter(address _router) external onlyOwner { - templeRouter = ITempleStableRouter(_router); - - emit SetTempleRouter(_router); - } - - /** - * set supported stables. by default these are the stable amm supported stable tokens - * @param _stables stable tokens to permit - * @param _supported to support or not - */ - function setSupportedStables( - address[] calldata _stables, - bool[] calldata _supported - ) external onlyOwner { - uint _length = _stables.length; - require(_supported.length == _length, "TempleZaps: Invalid Input length"); - for (uint i=0; i<_length; i++) { - supportedStables[_stables[i]] = _supported[i]; - } - } - - /** - * @notice recover token or ETH - * @param _token token to recover - * @param _to receiver of recovered token - * @param _amount amount to recover - */ - function recoverToken(address _token, address _to, uint256 _amount) external onlyOwner { - require(_to != address(0), "TempleZaps: Invalid receiver"); - if (_token == address(0)) { - // this is effectively how OpenZeppelin transfers eth - require(address(this).balance >= _amount, "TempleZaps: insufficient eth balance"); - (bool success,) = _to.call{value: _amount}(""); - require(success, "TempleZaps: unable to send value"); - } else { - _transferToken(IERC20(_token), _to, _amount); - } - - emit TokenRecovered(_token, _to, _amount); - } - - /** - * @notice This function zaps ETH or an ERC20 token to TEMPLE ERC20 token - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _minTempleReceived Minimum temple to receive - * @param _stableToken Supported temple pair stable token - * @param _minStableReceived Minimum temple pair stable token to receive - * @param _swapTarget Execution target for the swap - * @param _swapData DEX data - */ - function zapInTemple( - address _fromToken, - uint256 _fromAmount, - uint256 _minTempleReceived, - address _stableToken, - uint256 _minStableReceived, - address _swapTarget, - bytes memory _swapData - ) external payable whenNotPaused { - zapInTempleFor(_fromToken, _fromAmount, _minTempleReceived, _stableToken, _minStableReceived, msg.sender, _swapTarget, _swapData); - } - - /** - * @notice This function zaps ETH or an ERC20 token to TEMPLE LP token - * @param _fromAddress The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _minAmountOut Minimum tokens out after first DEX swap - * @param _swapTarget Execution target for the swap - * @param _params Parameters for liquidity addition - * @param _swapData DEX data - */ - function zapInTempleLP( - address _fromAddress, - uint256 _fromAmount, - uint256 _minAmountOut, - address _swapTarget, - TempleLiquidityParams memory _params, - bytes memory _swapData - ) external payable whenNotPaused { - zapInTempleLPFor(_fromAddress, _fromAmount, _minAmountOut, msg.sender, _swapTarget, _params, _swapData); - } - - /** - * @notice This function zaps ETH or an ERC20 token to TEMPLE and stakes in core vault - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _minTempleReceived Minimum tokens out after first DEX swap - * @param _stableToken Supported temple pair stable token - * @param _minStableReceived Minimum stable token to receive - * @param _vault Target core vault - * @param _swapTarget Execution target for the swap - * @param _swapData DEX data - */ - function zapInVault( - address _fromToken, - uint256 _fromAmount, - uint256 _minTempleReceived, - address _stableToken, - uint256 _minStableReceived, - address _vault, - address _swapTarget, - bytes memory _swapData - ) external payable whenNotPaused { - zapInVaultFor(_fromToken, _fromAmount, _minTempleReceived, _stableToken, _minStableReceived, _vault, msg.sender, _swapTarget, _swapData); - } - - /** - * @notice This function zaps ETH or an ERC20 token to TEMPLE ERC20 token - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _minTempleReceived Minimum temple to receive - * @param _stableToken Supported temple pair stable token - * @param _minStableReceived Minimum of stable token to receive - * @param _recipient Recipient of exit tokens - * @param _swapTarget Execution target for the swap - * @param _swapData DEX data - */ - function zapInTempleFor( - address _fromToken, - uint256 _fromAmount, - uint256 _minTempleReceived, - address _stableToken, - uint256 _minStableReceived, - address _recipient, - address _swapTarget, - bytes memory _swapData - ) public payable whenNotPaused { - require(supportedStables[_stableToken] == true, "TempleZaps: Unsupported stable token"); - - uint256 amountOut; - if (_fromToken != address(0)) { - SafeERC20.safeTransferFrom(IERC20(_fromToken), msg.sender, address(this), _fromAmount); - SafeERC20.safeIncreaseAllowance(IERC20(_fromToken), address(zaps), _fromAmount); - amountOut = zaps.zapIn(_fromToken, _fromAmount, _stableToken, _minStableReceived, _swapTarget, _swapData); - } else { - amountOut = Swap.fillQuote(_fromToken, _fromAmount, _stableToken, _swapTarget, _swapData); - require(amountOut >= _minStableReceived, "TempleZaps: Not enough stable tokens out"); - } - - _enterTemple(_stableToken, _recipient, amountOut, _minTempleReceived); - } - - /** - * @notice This function zaps ETH or an ERC20 token to TEMPLE LP token - * @param _fromAddress The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _minAmountOut Minimum tokens out after first DEX swap - * @param _for Recipient of exit LP tokens - * @param _swapTarget Execution target for the swap - * @param _params Parameters for liquidity addition - * @param _swapData DEX data - */ - function zapInTempleLPFor( - address _fromAddress, - uint256 _fromAmount, - uint256 _minAmountOut, - address _for, - address _swapTarget, - TempleLiquidityParams memory _params, - bytes memory _swapData - ) public payable { - require(supportedStables[_params.stableToken] == true, "TempleZaps: Unsupported stable token"); - - _pullTokens(_fromAddress, _fromAmount); - - // get pair tokens supporting stable coin - address pair = templeRouter.tokenPair(_params.stableToken); - address token0 = IUniswapV2Pair(pair).token0(); - address token1 = IUniswapV2Pair(pair).token1(); - - if (_fromAddress != token0 && _fromAddress != token1) { - - _fromAmount = Swap.fillQuote( - _fromAddress, - _fromAmount, - _params.stableToken, - _swapTarget, - _swapData - ); - require(_fromAmount >= _minAmountOut, "TempleZaps: Insufficient tokens out"); - - // After we've swapped from user provided token to stable token - // The stable token is now the intermediate token. - // reuse variable - _fromAddress = _params.stableToken; - } - (uint256 amountA, uint256 amountB) = _swapAMMTokens(pair, _params.stableToken, _fromAddress, _fromAmount, _params.lpSwapMinAmountOut); - - // approve tokens and add liquidity - { - SafeERC20.safeIncreaseAllowance(IERC20(token0), address(templeRouter), amountA); - SafeERC20.safeIncreaseAllowance(IERC20(token1), address(templeRouter), amountB); - } - - _addLiquidity(pair, _for, amountA, amountB, _params); - - emit ZappedInTempleLP(_for, _fromAddress, _fromAmount, amountA, amountB); - } - - /** - * @notice This function zaps ETH or an ERC20 token to TEMPLE and stakes in core vault - * @param _fromToken The token used for entry (address(0) if ether) - * @param _fromAmount The amount of fromToken to zap - * @param _minTempleReceived Minimum tokens out after first DEX swap - * @param _stableToken Supported temple pair stable token - * @param _minStableReceived Minimum stable token to receive - * @param _vault Target core vault - * @param _for Staked for - * @param _swapTarget Execution target for the swap - * @param _swapData DEX data - */ - function zapInVaultFor( - address _fromToken, - uint256 _fromAmount, - uint256 _minTempleReceived, - address _stableToken, - uint256 _minStableReceived, - address _vault, - address _for, - address _swapTarget, - bytes memory _swapData - ) public payable whenNotPaused { - require(supportedStables[_stableToken] == true, "TempleZaps: Unsupported stable token"); - - _pullTokens(_fromToken, _fromAmount); - - uint256 receivedTempleAmount; - if (_fromToken == temple) { - receivedTempleAmount = _fromAmount; - } else if (supportedStables[_fromToken]) { - // if fromToken is supported stable, enter temple directly - receivedTempleAmount = _enterTemple(_stableToken, address(this), _fromAmount, _minTempleReceived); - } else { - if (_fromToken != address(0)) { - IERC20(_fromToken).safeIncreaseAllowance(address(zaps), _fromAmount); - } - - // after zap in, enter temple from stable token - uint256 receivedStableAmount = zaps.zapIn{value: msg.value}( - _fromToken, - _fromAmount, - _stableToken, - _minStableReceived, - _swapTarget, - _swapData - ); - - receivedTempleAmount = _enterTemple(_stableToken, address(this), receivedStableAmount, _minTempleReceived); - } - - // approve and deposit for user - if (receivedTempleAmount > 0) { - IERC20(temple).safeIncreaseAllowance(_vault, receivedTempleAmount); - IVault(_vault).depositFor(_for, receivedTempleAmount); - emit ZappedTempleInVault(_for, _fromToken, _fromAmount, receivedTempleAmount); - } - } - - /** - * @dev Helper function to calculate swap in amount of a token before adding liquidit to uniswap v2 pair - * @param _token Token to swap in - * @param _pair Uniswap V2 Pair token - * @param _amount Amount of token - * @return uint256 Amount to swap - */ - function getAmountToSwap( - address _token, - address _pair, - uint256 _amount - ) public view returns (uint256) { - return Swap.getAmountToSwap(_token, _pair, _amount); - } - - function _addLiquidity( - address _pair, - address _for, - uint256 _amountA, - uint256 _amountB, - TempleLiquidityParams memory _params - ) internal { - (uint256 amountAActual, uint256 amountBActual,) = templeRouter.addLiquidity( - _amountA, - _amountB, - _params.amountAMin, - _params.amountBMin, - _params.stableToken, - _for, - DEADLINE - ); - - if (_params.transferResidual) { - if (amountAActual < _amountA) { - _transferToken(IERC20(IUniswapV2Pair(_pair).token0()), _for, _amountA - amountAActual); - } - - if(amountBActual < _amountB) { - _transferToken(IERC20(IUniswapV2Pair(_pair).token1()), _for, _amountB - amountBActual); - } - } - } - - function _swapAMMTokens( - address _pair, - address _stableToken, - address _intermediateToken, - uint256 _intermediateAmount, - uint256 _lpSwapMinAmountOut - ) internal returns (uint256 amountA, uint256 amountB) { - address token0 = IUniswapV2Pair(_pair).token0(); - uint256 amountToSwap = getAmountToSwap(_intermediateToken, _pair, _intermediateAmount); - uint256 remainder = _intermediateAmount - amountToSwap; - - uint256 amountOut; - if (_intermediateToken == temple) { - SafeERC20.safeIncreaseAllowance(IERC20(temple), address(templeRouter), amountToSwap); - - amountOut = templeRouter.swapExactTempleForStable(amountToSwap, _lpSwapMinAmountOut, _stableToken, address(this), type(uint128).max); - amountA = token0 == _stableToken ? amountOut : remainder; - amountB = token0 == _stableToken ? remainder : amountOut; - } else if (_intermediateToken == _stableToken) { - SafeERC20.safeIncreaseAllowance(IERC20(_stableToken), address(templeRouter), amountToSwap); - - // There's currently a shadowed declaration in the AMM Router causing amountOut to always be zero. - // So have to resort to getting the balance before/after. - uint256 balBefore = IERC20(temple).balanceOf(address(this)); - /*amountOut = */ templeRouter.swapExactStableForTemple(amountToSwap, _lpSwapMinAmountOut, _stableToken, address(this), type(uint128).max); - amountOut = IERC20(temple).balanceOf(address(this)) - balBefore; - - amountA = token0 == _stableToken ? remainder : amountOut; - amountB = token0 == _stableToken ? amountOut : remainder; - } else { - revert("Unsupported token of liquidity pool"); - } - } - - /** - * @notice This function swaps stables for TEMPLE - * @param _stableToken stable token - * @param _amountStable The amount of stable to swap - * @param _minTempleReceived The minimum acceptable quantity of TEMPLE to receive - * @return templeAmountReceived Quantity of TEMPLE received - */ - function _enterTemple( - address _stableToken, - address _templeReceiver, - uint256 _amountStable, - uint256 _minTempleReceived - ) internal returns (uint256 templeAmountReceived) { - uint256 templeBefore = IERC20(temple).balanceOf(address(this)); - SafeERC20.safeIncreaseAllowance(IERC20(_stableToken), address(templeRouter), _amountStable); - - templeRouter - .swapExactStableForTemple( - _amountStable, - _minTempleReceived, - _stableToken, - _templeReceiver, - DEADLINE - ); - // stableswap amm router has a shadowed declaration and so no value is returned after swapExactStableForTemple - // using calculation below instead - if (_templeReceiver == address(this)) { - templeAmountReceived = IERC20(temple).balanceOf(address(this)) - templeBefore; - require(templeAmountReceived >= _minTempleReceived, "TempleZaps: Not enough temple tokens received"); - } - } -} \ No newline at end of file diff --git a/protocol/contracts/zaps/ZapBase.sol b/protocol/contracts/zaps/ZapBase.sol deleted file mode 100644 index 4ce51d9fb..000000000 --- a/protocol/contracts/zaps/ZapBase.sol +++ /dev/null @@ -1,104 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; -import "./interfaces/IWeth.sol"; - -abstract contract ZapBase is Ownable { - using SafeERC20 for IERC20; - - bool public paused; - address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; - uint256 internal constant DEADLINE = 0xf000000000000000000000000000000000000000000000000000000000000000; - - // fromToken => swapTarget (per curve, univ2 and balancer) approval status - mapping(address => mapping(address => bool)) public approvedTargets; - - event SetContractState(bool paused); - - receive() external payable { - require(msg.sender != tx.origin, "ZapBase: Do not send ETH directly"); - } - - /** - @notice Adds or removes an approved swapTarget - * swapTargets should be Zaps and must not be tokens! - @param _tokens An array of tokens - @param _targets An array of addresses of approved swapTargets - @param _isApproved An array of booleans if target is approved or not - */ - function setApprovedTargets( - address[] calldata _tokens, - address[] calldata _targets, - bool[] calldata _isApproved - ) external onlyOwner { - uint256 _length = _isApproved.length; - require(_targets.length == _length && _tokens.length == _length, "ZapBase: Invalid Input length"); - - for (uint256 i = 0; i < _length; i++) { - approvedTargets[_tokens[i]][_targets[i]] = _isApproved[i]; - } - } - - /** - @notice Toggles the contract's active state - */ - function toggleContractActive() external onlyOwner { - paused = !paused; - - emit SetContractState(paused); - } - - function _transferToken(IERC20 _token, address _to, uint256 _amount) internal { - uint256 balance = _token.balanceOf(address(this)); - require(_amount <= balance, "ZapBase: not enough tokens"); - SafeERC20.safeTransfer(_token, _to, _amount); - } - - /** - * @notice Transfers tokens from msg.sender to this contract - * @notice If native token, use msg.value - * @notice For use with Zap Ins - * @param token The ERC20 token to transfer to this contract (0 address if ETH) - * @return Quantity of tokens transferred to this contract - */ - function _pullTokens( - address token, - uint256 amount - ) internal returns (uint256) { - if (token == address(0)) { - require(msg.value > 0, "ZapBase: No ETH sent"); - return msg.value; - } - - require(amount > 0, "ZapBase: Invalid token amount"); - require(msg.value == 0, "ZapBase: ETH sent with token"); - - SafeERC20.safeTransferFrom( - IERC20(token), - msg.sender, - address(this), - amount - ); - - return amount; - } - - function _depositEth( - uint256 _amount - ) internal { - require( - _amount > 0 && msg.value == _amount, - "ZapBase: Input ETH mismatch" - ); - IWETH(WETH).deposit{value: _amount}(); - } - - // circuit breaker modifiers - modifier whenNotPaused() { - require(!paused, "ZapBase: Paused"); - _; - } -} diff --git a/protocol/contracts/zaps/interfaces/IBalancerVault.sol b/protocol/contracts/zaps/interfaces/IBalancerVault.sol deleted file mode 100644 index 2e713e8bd..000000000 --- a/protocol/contracts/zaps/interfaces/IBalancerVault.sol +++ /dev/null @@ -1,70 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; - -interface IBalancerVault { - struct JoinPoolRequest { - IERC20[] assets; - uint256[] maxAmountsIn; - bytes userData; - bool fromInternalBalance; - } - - struct SingleSwap { - bytes32 poolId; - SwapKind kind; - IERC20 assetIn; - IERC20 assetOut; - uint256 amount; - bytes userData; - } - - struct BatchSwapStep { - bytes32 poolId; - uint256 assetInIndex; - uint256 assetOutIndex; - uint256 amount; - bytes userData; - } - - struct FundManagement { - address sender; - bool fromInternalBalance; - address payable recipient; - bool toInternalBalance; - } - - enum SwapKind { GIVEN_IN, GIVEN_OUT } - - function swap( - SingleSwap memory singleSwap, - FundManagement memory funds, - uint256 limit, - uint256 deadline - ) external payable returns (uint256 amountCalculated); - - function joinPool( - bytes32 poolId, - address sender, - address recipient, - JoinPoolRequest memory request - ) external payable; - - function getPoolTokens( - bytes32 poolId - ) external view - returns ( - address[] memory tokens, - uint256[] memory balances, - uint256 lastChangeBlock - ); - - function queryBatchSwap( - SwapKind kind, - BatchSwapStep[] memory swaps, - IERC20[] memory assets, - FundManagement memory funds - ) external view returns (int256[] memory); -} \ No newline at end of file diff --git a/protocol/contracts/zaps/interfaces/ICurveFactory.sol b/protocol/contracts/zaps/interfaces/ICurveFactory.sol deleted file mode 100644 index fe35a668e..000000000 --- a/protocol/contracts/zaps/interfaces/ICurveFactory.sol +++ /dev/null @@ -1,7 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -interface ICurveFactory { - function get_n_coins(address pool) external view returns (uint256); - function get_meta_n_coins(address pool) external view returns (uint256, uint256); -} \ No newline at end of file diff --git a/protocol/contracts/zaps/interfaces/ICurvePool.sol b/protocol/contracts/zaps/interfaces/ICurvePool.sol deleted file mode 100644 index 20755ee04..000000000 --- a/protocol/contracts/zaps/interfaces/ICurvePool.sol +++ /dev/null @@ -1,15 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -interface ICurvePool { - function coins(uint256 j) external view returns (address); - function calc_token_amount(uint256[] calldata _amounts, bool _is_deposit) external view returns (uint256); - function add_liquidity(uint256[] calldata _amounts, uint256 _min_mint_amount, address destination) external returns (uint256); - function add_liquidity(uint256[] calldata _amounts, uint256 _min_mint_amount, bool use_ether, address destination) external returns (uint256); - function get_dy(uint256 _from, uint256 _to, uint256 _from_amount) external view returns (uint256); - function remove_liquidity(uint256 _amount, uint256[2] calldata _min_amounts) external returns (uint256[2] memory); - function fee() external view returns (uint256); - function balanceOf(address account) external view returns (uint256); - function exchange(uint256 i, uint256 j, uint256 dx, uint256 min_dy) external returns (uint256); - function remove_liquidity_imbalance(uint256[2] memory amounts, uint256 _max_burn_amount, address _receiver) external returns (uint256); -} \ No newline at end of file diff --git a/protocol/contracts/zaps/interfaces/IGenericZaps.sol b/protocol/contracts/zaps/interfaces/IGenericZaps.sol deleted file mode 100644 index 9d97e1701..000000000 --- a/protocol/contracts/zaps/interfaces/IGenericZaps.sol +++ /dev/null @@ -1,14 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -interface IGenericZaps { - function zapIn( - address fromToken, - uint256 fromAmount, - address toToken, - uint256 amountOutMin, - address swapTarget, - bytes calldata swapData - ) external payable returns (uint256 amountOut); - function getSwapInAmount(uint256 reserveIn, uint256 userIn) external pure returns (uint256); -} \ No newline at end of file diff --git a/protocol/contracts/zaps/interfaces/ITempleStableRouter.sol b/protocol/contracts/zaps/interfaces/ITempleStableRouter.sol deleted file mode 100644 index 0e7d19f05..000000000 --- a/protocol/contracts/zaps/interfaces/ITempleStableRouter.sol +++ /dev/null @@ -1,32 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -interface ITempleStableRouter { - function tokenPair(address token) external view returns (address); - function swapExactStableForTemple( - uint amountIn, - uint amountOutMin, - address stable, - address to, - uint deadline - ) external returns (uint amountOut); - function swapExactTempleForStable( - uint amountIn, - uint amountOutMin, - address stable, - address to, - uint deadline - ) external returns (uint); - function addLiquidity( - uint amountADesired, - uint amountBDesired, - uint amountAMin, - uint amountBMin, - address stable, - address to, - uint deadline - ) external returns (uint amountA, uint amountB, uint liquidity); - function swapExactStableForTempleQuote(address pair, uint amountIn) external view returns (uint amountOut); - function swapExactTempleForStableQuote(address pair, uint amountIn) external view returns (bool priceBelowIV, uint amountOut); - function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); -} \ No newline at end of file diff --git a/protocol/contracts/zaps/interfaces/IUniswapV2Factory.sol b/protocol/contracts/zaps/interfaces/IUniswapV2Factory.sol deleted file mode 100644 index 285b056e6..000000000 --- a/protocol/contracts/zaps/interfaces/IUniswapV2Factory.sol +++ /dev/null @@ -1,6 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -interface IUniswapV2Factory { - function getPair(address tokenA, address tokenB) external view returns (address pair); -} \ No newline at end of file diff --git a/protocol/contracts/zaps/interfaces/IUniswapV2Pair.sol b/protocol/contracts/zaps/interfaces/IUniswapV2Pair.sol deleted file mode 100644 index e4e60117f..000000000 --- a/protocol/contracts/zaps/interfaces/IUniswapV2Pair.sol +++ /dev/null @@ -1,9 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -interface IUniswapV2Pair { - function balanceOf(address owner) external view returns (uint256); - function token0() external view returns (address); - function token1() external view returns (address); - function getReserves() external view returns (uint112, uint112, uint32); -} \ No newline at end of file diff --git a/protocol/contracts/zaps/interfaces/IUniswapV2Router.sol b/protocol/contracts/zaps/interfaces/IUniswapV2Router.sol deleted file mode 100644 index 1a968d950..000000000 --- a/protocol/contracts/zaps/interfaces/IUniswapV2Router.sol +++ /dev/null @@ -1,25 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -interface IUniswapV2Router { - function addLiquidity( - address tokenA, - address tokenB, - uint amountADesired, - uint amountBDesired, - uint amountAMin, - uint amountBMin, - address to, - uint deadline - ) external returns (uint amountA, uint amountB, uint liquidity); - - function swapExactTokensForTokens( - uint amountIn, - uint amountOutMin, - address[] calldata path, - address to, - uint deadline - ) external returns (uint[] memory amounts); - - function factory() external view returns (address); -} \ No newline at end of file diff --git a/protocol/contracts/zaps/interfaces/IVault.sol b/protocol/contracts/zaps/interfaces/IVault.sol deleted file mode 100644 index 55bebc93c..000000000 --- a/protocol/contracts/zaps/interfaces/IVault.sol +++ /dev/null @@ -1,6 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -interface IVault { - function depositFor(address _account, uint256 _amount) external; -} \ No newline at end of file diff --git a/protocol/contracts/zaps/interfaces/IWeth.sol b/protocol/contracts/zaps/interfaces/IWeth.sol deleted file mode 100644 index f52de94df..000000000 --- a/protocol/contracts/zaps/interfaces/IWeth.sol +++ /dev/null @@ -1,6 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -interface IWETH { - function deposit() external payable; -} \ No newline at end of file diff --git a/protocol/contracts/zaps/libs/EthConstants.sol b/protocol/contracts/zaps/libs/EthConstants.sol deleted file mode 100644 index d6ac955bf..000000000 --- a/protocol/contracts/zaps/libs/EthConstants.sol +++ /dev/null @@ -1,6 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -library EthConstants { - address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; -} \ No newline at end of file diff --git a/protocol/contracts/zaps/libs/Executable.sol b/protocol/contracts/zaps/libs/Executable.sol deleted file mode 100644 index ef890b0a3..000000000 --- a/protocol/contracts/zaps/libs/Executable.sol +++ /dev/null @@ -1,34 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -/// @notice An inlined library function to add a generic execute() function to contracts. -/// @dev As this is a powerful function, care and consideration needs to be taken when -/// adding into contracts, and on who can call. -library Executable { - - /// @notice Call a function on another contract, where the msg.sender will be this contract - /// @param _to The address of the contract to call - /// @param _value Any eth to send - /// @param _data The encoded function selector and args. - /// @dev If the underlying function reverts, this willl revert where the underlying revert message will bubble up. - function execute( - address _to, - uint256 _value, - bytes memory _data - ) internal returns (bytes memory) { - (bool success, bytes memory returndata) = _to.call{value: _value}(_data); - - if (success) { - return returndata; - } else if (returndata.length > 0) { - // Look for revert reason and bubble it up if present - // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol#L232 - assembly { - let returndata_size := mload(returndata) - revert(add(32, returndata), returndata_size) - } - } else { - revert("Execute: Unknown failure"); - } - } -} \ No newline at end of file diff --git a/protocol/contracts/zaps/libs/Swap.sol b/protocol/contracts/zaps/libs/Swap.sol deleted file mode 100644 index 96dac94d7..000000000 --- a/protocol/contracts/zaps/libs/Swap.sol +++ /dev/null @@ -1,111 +0,0 @@ -pragma solidity ^0.8.4; -// SPDX-License-Identifier: AGPL-3.0-or-later - -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "../interfaces/IUniswapV2Pair.sol"; -import "../interfaces/IWeth.sol"; -import "./Executable.sol"; -import "./EthConstants.sol"; - - -/// @notice An inlined library for liquidity pool related helper functions. -library Swap { - - // @dev calling function should ensure targets are approved - function fillQuote( - address _fromToken, - uint256 _fromAmount, - address _toToken, - address _swapTarget, - bytes memory _swapData - ) internal returns (uint256) { - if (_swapTarget == EthConstants.WETH) { - require(_fromToken == EthConstants.WETH, "Swap: Invalid from token and WETH target"); - require( - _fromAmount > 0 && msg.value == _fromAmount, - "Swap: Input ETH mismatch" - ); - IWETH(EthConstants.WETH).deposit{value: _fromAmount}(); - return _fromAmount; - } - - uint256 amountBought; - uint256 valueToSend; - if (_fromToken == address(0)) { - require( - _fromAmount > 0 && msg.value == _fromAmount, - "Swap: Input ETH mismatch" - ); - valueToSend = _fromAmount; - } else { - SafeERC20.safeIncreaseAllowance(IERC20(_fromToken), _swapTarget, _fromAmount); - } - - // to calculate amount received - uint256 initialBalance = IERC20(_toToken).balanceOf(address(this)); - - // we don't need the returndata here - Executable.execute(_swapTarget, valueToSend, _swapData); - unchecked { - amountBought = IERC20(_toToken).balanceOf(address(this)) - initialBalance; - } - - return amountBought; - } - - function getAmountToSwap( - address _token, - address _pair, - uint256 _amount - ) internal view returns (uint256) { - address token0 = IUniswapV2Pair(_pair).token0(); - (uint112 reserveA, uint112 reserveB,) = IUniswapV2Pair(_pair).getReserves(); - uint256 reserveIn = token0 == _token ? reserveA : reserveB; - uint256 amountToSwap = calculateSwapInAmount(reserveIn, _amount); - return amountToSwap; - } - - function calculateSwapInAmount( - uint256 reserveIn, - uint256 userIn - ) internal pure returns (uint256) { - return - (sqrt( - reserveIn * ((userIn * 3988000) + (reserveIn * 3988009)) - ) - (reserveIn * 1997)) / 1994; - } - - // borrowed from Uniswap V2 Core Math library https://github.com/Uniswap/v2-core/blob/master/contracts/libraries/Math.sol - // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) - function sqrt(uint y) internal pure returns (uint z) { - if (y > 3) { - z = y; - uint x = y / 2 + 1; - while (x < z) { - z = x; - x = (y / x + x) / 2; - } - } else if (y != 0) { - z = 1; - } - } - - /** - * given some amount of an asset and pair reserves, returns an equivalent amount of the other asset - * - * Direct copy of UniswapV2Library.quote(amountA, reserveA, reserveB) - can't use as directly as it's built off a different version of solidity - */ - function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) { - require(reserveA > 0 && reserveB > 0, "Swap: Insufficient liquidity"); - amountB = (amountA * reserveB) / reserveA; - } - - function getPairTokens( - address _pairAddress - ) internal view returns (address token0, address token1) { - IUniswapV2Pair pair = IUniswapV2Pair(_pairAddress); - token0 = pair.token0(); - token1 = pair.token1(); - } - -} \ No newline at end of file diff --git a/protocol/contracts/zaps/readme.md b/protocol/contracts/zaps/readme.md deleted file mode 100644 index ba3fe95b7..000000000 --- a/protocol/contracts/zaps/readme.md +++ /dev/null @@ -1,127 +0,0 @@ -# Zaps Documentation - -## Temple Zaps - -This section covers temple-specific zaps including core and liquidity pool zaps. - - -### Generating data for swap - -Particularly for temple/core zaps, the starting token has to be zapped into one of the stable tokens that our private AMM supports before interacting with the private AMM router. The quickest way to get the necessary swap data is by using exchange API. `0x` API is being used here. - -Example `GET` request url for real-time swap data to exchange 500000000000000000000 `ETH` to `FRAX`: - -`https://api.0x.org/swap/v1/quote?sellToken=0x0000000000000000000000000000000000000000&sellAmount=500000000000000000000&buyToken=0x853d955acef822db058eb8505911ed77f175b99e` - -The `data` property of the response object is what is used as `_swapData` in most `TempleZaps` functions. - -### Zapping ETH or ERC20 token to TEMPLE - -The functions of importance here are `TempleZaps.zapInTemple()` and `TempleZaps.zapInTempleFor()`. See functions for details on function parameters. - - -```solidity -function zapInTemple( - address _fromToken, - uint256 _fromAmount, - uint256 _minTempleReceived, - address _stableToken, - uint256 _minStableReceived, - address _swapTarget, - bytes memory _swapData -) external payable; - -function zapInTempleFor( - address _fromToken, - uint256 _fromAmount, - uint256 _minTempleReceived, - address _stableToken, - uint256 _minStableReceived, - address _recipient, - address _swapTarget, - bytes memory _swapData -) public payable; -``` - -### Zapping ETH or ERC20 token to Temple LP - -To add LP to any of the pools [TEMPLE/FRAX]() and [TEMPLE/FEI](), use any of `TempleZaps.zapInTempleLPFor()` or `TempleZaps.zapInTempleLP()`. -Parameter worth mentioning here is `TempleLiquidityParams` with the following properties. - -```solidity -struct TempleLiquidityParams { - uint256 amountAMin; - uint256 amountBMin; - uint256 lpSwapMinAmountOut; - address stableToken; - bool transferResidual; -} - -``` -To prevent frontrunning, it's highly recommended to compute these values offchain and use these amounts as safestops for the values that are computed onchain. - -`amountAMin, amountBMin`: These values ensure the minimum of the desired amounts of tokens that you wish to add to the LP are met. You can compute them by calling the helper view function `TempleZaps.addLiquidityGetMinAmounts()`. - -`lpSwapMinAmountOut`: Minimum amount of tokens out when exchanging one token for another in the same pool that one wishes to add liquidity. This is the case where a two-sided liquidity addition is being done. By default, univ2 pools require 2-sided liquidity addition (i.e. 2 tokens). This could be a uniV2 pool, curve pool or balancer pool. - -`transferResidual`: in the case of univ2 LPs, there may be very small amounts of either tokens left over after liquidity has been finally added. This flag is set to `true` if LP recipient wants these small amounts back. - -### Zapping ETH or ERC20 token into core vault - -`TempleZaps.zapInVaultFor()` and `TempleZaps.zapInVault()` are the relevant functions. Similar to zapping into temple except exit temple is staked into core vault. - -## Generic Zaps - -Generic zaps zap to tokens that are not temple/core-specific. Some underlying features are used by temple zaps. - -### Params - -```solidity -struct ZapLiquidityRequest { - uint248 firstSwapMinAmountOut; - bool useAltFunction; - uint248 poolSwapMinAmountOut; - bool isOneSidedLiquidityAddition; - address otherToken; - bool shouldTransferResidual; - uint256 minLiquidityOut; - uint256 uniAmountAMin; - uint256 uniAmountBMin; - bytes poolSwapData; -} -``` -`firstSwapMinAmountOut`: Minimum amount out for DEX swap. - -`useAltFunction`: This flag is for special case base 2 curve pools such as fxs/cvxFxs pool, where `addLiquidity()` function requires 4 arguments (an extra bool flag for eth deposit) as opposed to the usual 3 arguments (amounts, minimum liquidity out and recipient address`). - -`poolSwapMinAmountOut`: Minimum amount out when exchanging one token for the other in the same pool liquidity is supposed to be added (if not one-sided liquidity addition). - -`isOneSidedLiquidityAddition`: - -`otherToken`: Second token in pool to swap to, before liquidity addition (if not one-sided liquidity addition). - -`shouldTransferResidual`: If residual tokens remaining should be transferred - -`minLiquidityOut`: Minimum amount of liquidity tokens to receive - -`uniAmountAMin, uniAmountBMin`: These values ensure the minimum of the desired amounts of tokens that you wish to add to the LP are met. You can compute them by calling the helper view function `GenericZaps.addLiquidityGetMinAmounts()`. Applicable to UniV2. - -`poolSwapData`: Swap data for exchanging one token for the other, before adding liquidity to pool. Particular to curve and balancer pools. - - - -### Zapping ETH or ERC20 token to another token - -Similar to `zapInTemple()`, `GenericZaps.zapIn()` and `GenericZaps.zapInFor()` swap from one token to the other (except exit token could be any ERC20 token). - -### Zapping ETH or ERC20 token to UniV2 LP - -Similar to temple zaps process. Functions of interest are `zapLiquidityUniV2For()` and `zapLiquidityUniV2()`. - -### Zapping ETH or ERC20 token to Curve LP - -Similar to temple zaps process. Functions of interest are `zapLiquidityCurvePoolFor()` and `zapLiquidityCurvePool()` - -### Zapping ETH or ERC20 token to Balancer LP - -Functions of interest are `zapLiquidityBalancerPoolFor()` and `zapLiquidityBalancerPool()`. \ No newline at end of file diff --git a/protocol/package.json b/protocol/package.json index 578eb8b05..d14ef285f 100644 --- a/protocol/package.json +++ b/protocol/package.json @@ -15,8 +15,8 @@ "@nomiclabs/hardhat-ethers": "^2.2.1", "@nomiclabs/hardhat-etherscan": "^3.1.2", "@nomiclabs/hardhat-ganache": "^2.0.1", - "@openzeppelin/contracts": "^4.8.1", - "@openzeppelin/contracts-upgradeable": "^4.8.1", + "@openzeppelin/contracts": "^5.0.2", + "@openzeppelin/contracts-upgradeable": "^5.0.2", "@prb/math": "4.0.1", "@typechain/ethers-v5": "^10.1.0", "@typechain/hardhat": "^6.1.2", diff --git a/protocol/slither.db.json b/protocol/slither.db.json index 6d58b3e71..f0fa33612 100644 --- a/protocol/slither.db.json +++ b/protocol/slither.db.json @@ -1,43090 +1,301515 @@ [ - { - "elements": [ - { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 7809, - "length": 246, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [195, 196, 197, 198, 199], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" - } - }, - { - "type": "node", - "name": "treasuryReservesVault.borrow(daiToken,amount,address(this))", - "source_mapping": { - "start": 7958, - "length": 61, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [197], - "starting_column": 9, - "ending_column": 70 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 7809, - "length": 246, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [195, 196, 197, 198, 199], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_dsrDeposit(amount)", - "source_mapping": { - "start": 8029, - "length": 19, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [198], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 7809, - "length": 246, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [195, 196, 197, 198, 199], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "daiJoin.join(address(this),amount)", - "source_mapping": { - "start": 8342, - "length": 35, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [207], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrDeposit", - "source_mapping": { - "start": 8061, - "length": 349, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrDeposit(uint256)" + { + "elements": [ + { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + }, + { + "type": "node", + "name": "quoteToken.approve(address(balancerVault),0)", + "source_mapping": { + "start": 21130, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 489 + ], + "starting_column": 17, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "chi = pot.drip()", - "source_mapping": { - "start": 5566, - "length": 60, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_checkpointChi()" + ], + "description": "Ramos.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/amo/Ramos.sol#462-511) ignores return value by quoteToken.approve(address(balancerVault),0) (contracts/amo/Ramos.sol#489)\n", + "markdown": "[Ramos.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/amo/Ramos.sol#L462-L511) ignores return value by [quoteToken.approve(address(balancerVault),0)](contracts/amo/Ramos.sol#L489)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L462-L511", + "id": "1acb56caae7ee9b6838e5f5408e687213e838f292c79c37223b9cb790b0a5f6c", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "relayedSetEndorsementsFor", + "source_mapping": { + "start": 3547, + "length": 759, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 906, + "length": 4629, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" + } + }, + { + "type": "node", + "name": "(signer,err) = ECDSA.tryRecover(digest,signature)", + "source_mapping": { + "start": 3799, + "length": 79, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 120 + ], + "starting_column": 9, + "ending_column": 88 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "relayedSetEndorsementsFor", + "source_mapping": { + "start": 3547, + "length": 759, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 906, + "length": 4629, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "pot.join(shares)", - "source_mapping": { - "start": 8387, - "length": 16, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [208], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrDeposit", - "source_mapping": { - "start": 8061, - "length": 349, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrDeposit(uint256)" + ], + "description": "ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes) (contracts/governance/ElderElection.sol#112-129) ignores return value by (signer,err) = ECDSA.tryRecover(digest,signature) (contracts/governance/ElderElection.sol#120)\n", + "markdown": "[ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)](contracts/governance/ElderElection.sol#L112-L129) ignores return value by [(signer,err) = ECDSA.tryRecover(digest,signature)](contracts/governance/ElderElection.sol#L120)\n", + "first_markdown_element": "contracts/governance/ElderElection.sol#L112-L129", + "id": "9b64f931f815683d4712a17416d4cf6183b989dbcbcf6cf13a099a9bb82f7fbd", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + }, + { + "type": "node", + "name": "_tokenVault.borrowProtocolToken(protocolTokenAmount,address(this))", + "source_mapping": { + "start": 20653, + "length": 67, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 481 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_tokenVault.borrowQuoteToken(quoteTokenAmount,address(this))", + "source_mapping": { + "start": 20730, + "length": 61, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 482 + ], + "starting_column": 9, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount)", + "source_mapping": { + "start": 20871, + "length": 80, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 486 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.approve(address(balancerVault),0)", + "source_mapping": { + "start": 21130, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 489 + ], + "starting_column": 17, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount)", + "source_mapping": { + "start": 21193, + "length": 74, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 490 + ], + "starting_column": 17, + "ending_column": 91 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "balancerVault.joinPool(balancerPoolId,address(this),address(this),request)", + "source_mapping": { + "start": 21410, + "length": 77, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 497 + ], + "starting_column": 13, + "ending_column": 90 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)", + "source_mapping": { + "start": 21686, + "length": 75, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 504 + ], + "starting_column": 9, + "ending_column": 84 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19877, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "DaiDeposited(amount)", - "source_mapping": { - "start": 8307, - "length": 25, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [206], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrDeposit", - "source_mapping": { - "start": 8061, - "length": 349, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrDeposit(uint256)" + ], + "description": "Reentrancy in Ramos.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/amo/Ramos.sol#462-511):\n\tExternal calls:\n\t- _tokenVault.borrowProtocolToken(protocolTokenAmount,address(this)) (contracts/amo/Ramos.sol#481)\n\t- _tokenVault.borrowQuoteToken(quoteTokenAmount,address(this)) (contracts/amo/Ramos.sol#482)\n\t- protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount) (contracts/amo/Ramos.sol#486)\n\t- quoteToken.approve(address(balancerVault),0) (contracts/amo/Ramos.sol#489)\n\t- quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount) (contracts/amo/Ramos.sol#490)\n\t- balancerVault.joinPool(balancerPoolId,address(this),address(this),request) (contracts/amo/Ramos.sol#497)\n\tEvent emitted after the call(s):\n\t- LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) (contracts/amo/Ramos.sol#504)\n", + "markdown": "Reentrancy in [Ramos.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/amo/Ramos.sol#L462-L511):\n\tExternal calls:\n\t- [_tokenVault.borrowProtocolToken(protocolTokenAmount,address(this))](contracts/amo/Ramos.sol#L481)\n\t- [_tokenVault.borrowQuoteToken(quoteTokenAmount,address(this))](contracts/amo/Ramos.sol#L482)\n\t- [protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount)](contracts/amo/Ramos.sol#L486)\n\t- [quoteToken.approve(address(balancerVault),0)](contracts/amo/Ramos.sol#L489)\n\t- [quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount)](contracts/amo/Ramos.sol#L490)\n\t- [balancerVault.joinPool(balancerPoolId,address(this),address(this),request)](contracts/amo/Ramos.sol#L497)\n\tEvent emitted after the call(s):\n\t- [LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)](contracts/amo/Ramos.sol#L504)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L462-L511", + "id": "091d4b185888c9ea40fc206a3a47abe3a16a55f493010202d1ea982502231085", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24025, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + }, + { + "type": "node", + "name": "bptToken.safeTransferFrom(msg.sender,address(this),amount)", + "source_mapping": { + "start": 24208, + "length": 60, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 569 + ], + "starting_column": 13, + "ending_column": 73 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24025, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "bptToken.safeTransfer(address(amoStaking),amount)", + "source_mapping": { + "start": 24288, + "length": 50, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 571 + ], + "starting_column": 9, + "ending_column": 59 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24025, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "amoStaking.depositAndStake(amount)", + "source_mapping": { + "start": 24348, + "length": 34, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 572 + ], + "starting_column": 9, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24025, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "DepositAndStakeBptTokens(amount)", + "source_mapping": { + "start": 24392, + "length": 37, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 573 + ], + "starting_column": 9, + "ending_column": 46 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24025, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "_dsrDeposit(amount)", - "source_mapping": { - "start": 8029, - "length": 19, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [198], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 7809, - "length": 246, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [195, 196, 197, 198, 199], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" + ], + "description": "Reentrancy in Ramos.depositAndStakeBptTokens(uint256,bool) (contracts/amo/Ramos.sol#564-574):\n\tExternal calls:\n\t- bptToken.safeTransferFrom(msg.sender,address(this),amount) (contracts/amo/Ramos.sol#569)\n\t- bptToken.safeTransfer(address(amoStaking),amount) (contracts/amo/Ramos.sol#571)\n\t- amoStaking.depositAndStake(amount) (contracts/amo/Ramos.sol#572)\n\tEvent emitted after the call(s):\n\t- DepositAndStakeBptTokens(amount) (contracts/amo/Ramos.sol#573)\n", + "markdown": "Reentrancy in [Ramos.depositAndStakeBptTokens(uint256,bool)](contracts/amo/Ramos.sol#L564-L574):\n\tExternal calls:\n\t- [bptToken.safeTransferFrom(msg.sender,address(this),amount)](contracts/amo/Ramos.sol#L569)\n\t- [bptToken.safeTransfer(address(amoStaking),amount)](contracts/amo/Ramos.sol#L571)\n\t- [amoStaking.depositAndStake(amount)](contracts/amo/Ramos.sol#L572)\n\tEvent emitted after the call(s):\n\t- [DepositAndStakeBptTokens(amount)](contracts/amo/Ramos.sol#L573)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L564-L574", + "id": "a7249c20cc127d6173fc40d9683538ced29502e2d3e8095440a2939d5dddf5d0", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13776, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + }, + { + "type": "node", + "name": "amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))", + "source_mapping": { + "start": 14207, + "length": 70, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 341 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13776, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minQuoteTokenAmountOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,treasuryPriceIndex(),quoteToken)", + "source_mapping": { + "start": 14327, + "length": 266, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 344, + 345, + 346, + 347 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13776, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeTransfer(feeCollector,feeAmt)", + "source_mapping": { + "start": 14786, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 352 + ], + "starting_column": 13, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13776, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RebalanceDownExit(bptAmountIn,quoteTokenAmountOut,feeAmt)", + "source_mapping": { + "start": 14925, + "length": 64, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 358 + ], + "starting_column": 9, + "ending_column": 73 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13776, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in DsrBaseStrategy.borrowAndDeposit(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#195-199):\n\tExternal calls:\n\t- treasuryReservesVault.borrow(daiToken,amount,address(this)) (contracts/v2/strategies/DsrBaseStrategy.sol#197)\n\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n\t\t- daiJoin.join(address(this),amount) (contracts/v2/strategies/DsrBaseStrategy.sol#207)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t\t- pot.join(shares) (contracts/v2/strategies/DsrBaseStrategy.sol#208)\n\tEvent emitted after the call(s):\n\t- DaiDeposited(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#206)\n\t\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n", - "markdown": "Reentrancy in [DsrBaseStrategy.borrowAndDeposit(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L195-L199):\n\tExternal calls:\n\t- [treasuryReservesVault.borrow(daiToken,amount,address(this))](contracts/v2/strategies/DsrBaseStrategy.sol#L197)\n\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n\t\t- [daiJoin.join(address(this),amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L207)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t\t- [pot.join(shares)](contracts/v2/strategies/DsrBaseStrategy.sol#L208)\n\tEvent emitted after the call(s):\n\t- [DaiDeposited(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L206)\n\t\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L195-L199", - "id": "6f150fd09fac2796a24b461a93dcda378e0b73d3d94cc538625af3f9b9d80747", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_swap", - "source_mapping": { - "start": 13928, - "length": 768, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MultiOtcOffer", - "source_mapping": { - "start": 1163, - "length": 13535, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in Ramos.rebalanceDownExit(uint256,uint256) (contracts/amo/Ramos.sol#332-362):\n\tExternal calls:\n\t- amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper)) (contracts/amo/Ramos.sol#341)\n\t- quoteTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minQuoteTokenAmountOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,treasuryPriceIndex(),quoteToken) (contracts/amo/Ramos.sol#344-347)\n\t- quoteToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#352)\n\tEvent emitted after the call(s):\n\t- RebalanceDownExit(bptAmountIn,quoteTokenAmountOut,feeAmt) (contracts/amo/Ramos.sol#358)\n", + "markdown": "Reentrancy in [Ramos.rebalanceDownExit(uint256,uint256)](contracts/amo/Ramos.sol#L332-L362):\n\tExternal calls:\n\t- [amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))](contracts/amo/Ramos.sol#L341)\n\t- [quoteTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minQuoteTokenAmountOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,treasuryPriceIndex(),quoteToken)](contracts/amo/Ramos.sol#L344-L347)\n\t- [quoteToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L352)\n\tEvent emitted after the call(s):\n\t- [RebalanceDownExit(bptAmountIn,quoteTokenAmountOut,feeAmt)](contracts/amo/Ramos.sol#L358)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L332-L362", + "id": "86a53e330fffe167ad16fe5543549acebea2b6d799ac824c06d7b5f50d6c38da", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 17948, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + }, + { + "type": "node", + "name": "tokenVault.borrowProtocolToken(protocolTokenAmountIn,address(this))", + "source_mapping": { + "start": 18312, + "length": 68, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 427 + ], + "starting_column": 9, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 17948, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolToken.safeTransfer(feeCollector,feeAmt)", + "source_mapping": { + "start": 18586, + "length": 48, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 432 + ], + "starting_column": 13, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 17948, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolToken.safeTransfer(address(_poolHelper),joinAmountIn)", + "source_mapping": { + "start": 18818, + "length": 62, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 438 + ], + "starting_column": 9, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 17948, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,protocolTokenBalancerPoolIndex,protocolToken)", + "source_mapping": { + "start": 18933, + "length": 264, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 441, + 442, + 443, + 444, + 445 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 17948, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RebalanceDownJoin(protocolTokenAmountIn,bptTokensStaked,feeAmt)", + "source_mapping": { + "start": 19207, + "length": 70, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 446 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 17948, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_swap(bytes32,uint256)" - } - }, - { - "type": "node", - "name": "_userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount)", - "source_mapping": { - "start": 14618, - "length": 71, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [306], - "starting_column": 9, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_swap", - "source_mapping": { - "start": 13928, - "length": 768, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [ - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MultiOtcOffer", - "source_mapping": { - "start": 1163, - "length": 13535, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_swap(bytes32,uint256)" + ], + "description": "Reentrancy in Ramos.rebalanceDownJoin(uint256,uint256) (contracts/amo/Ramos.sol#419-453):\n\tExternal calls:\n\t- tokenVault.borrowProtocolToken(protocolTokenAmountIn,address(this)) (contracts/amo/Ramos.sol#427)\n\t- protocolToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#432)\n\t- protocolToken.safeTransfer(address(_poolHelper),joinAmountIn) (contracts/amo/Ramos.sol#438)\n\t- bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,protocolTokenBalancerPoolIndex,protocolToken) (contracts/amo/Ramos.sol#441-445)\n\tEvent emitted after the call(s):\n\t- RebalanceDownJoin(protocolTokenAmountIn,bptTokensStaked,feeAmt) (contracts/amo/Ramos.sol#446)\n", + "markdown": "Reentrancy in [Ramos.rebalanceDownJoin(uint256,uint256)](contracts/amo/Ramos.sol#L419-L453):\n\tExternal calls:\n\t- [tokenVault.borrowProtocolToken(protocolTokenAmountIn,address(this))](contracts/amo/Ramos.sol#L427)\n\t- [protocolToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L432)\n\t- [protocolToken.safeTransfer(address(_poolHelper),joinAmountIn)](contracts/amo/Ramos.sol#L438)\n\t- [bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,protocolTokenBalancerPoolIndex,protocolToken)](contracts/amo/Ramos.sol#L441-L445)\n\tEvent emitted after the call(s):\n\t- [RebalanceDownJoin(protocolTokenAmountIn,bptTokensStaked,feeAmt)](contracts/amo/Ramos.sol#L446)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L419-L453", + "id": "cf17a4ee1ba6b6f324d63d28f3c7859bb03f334538e78ac2daf4f5d9278251dd", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11723, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + }, + { + "type": "node", + "name": "amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))", + "source_mapping": { + "start": 12146, + "length": 70, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 297 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11723, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minProtocolTokenOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,protocolTokenBalancerPoolIndex,treasuryPriceIndex(),protocolToken)", + "source_mapping": { + "start": 12273, + "length": 279, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 300, + 301, + 302, + 303, + 304 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11723, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolToken.safeTransfer(feeCollector,feeAmt)", + "source_mapping": { + "start": 12751, + "length": 48, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 309 + ], + "starting_column": 13, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11723, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RebalanceUpExit(bptAmountIn,protocolTokenAmountOut,feeAmt)", + "source_mapping": { + "start": 12967, + "length": 65, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 316 + ], + "starting_column": 9, + "ending_column": 74 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11723, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "MultiOtcOffer._swap(bytes32,uint256) (contracts/core/MultiOtcOffer.sol#296-307) uses arbitrary from in transferFrom: _userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount) (contracts/core/MultiOtcOffer.sol#306)\n", - "markdown": "[MultiOtcOffer._swap(bytes32,uint256)](contracts/core/MultiOtcOffer.sol#L296-L307) uses arbitrary from in transferFrom: [_userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount)](contracts/core/MultiOtcOffer.sol#L306)\n", - "first_markdown_element": "contracts/core/MultiOtcOffer.sol#L296-L307", - "id": "5fcc674f3a64b4a8a632801f25795f7fc58332f3a16f9dbb5c2653279f239534", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 5765, - "length": 517, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OtcOffer", - "source_mapping": { - "start": 847, - "length": 6468, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [ - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in Ramos.rebalanceUpExit(uint256,uint256) (contracts/amo/Ramos.sol#288-320):\n\tExternal calls:\n\t- amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper)) (contracts/amo/Ramos.sol#297)\n\t- protocolTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minProtocolTokenOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,protocolTokenBalancerPoolIndex,treasuryPriceIndex(),protocolToken) (contracts/amo/Ramos.sol#300-304)\n\t- protocolToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#309)\n\tEvent emitted after the call(s):\n\t- RebalanceUpExit(bptAmountIn,protocolTokenAmountOut,feeAmt) (contracts/amo/Ramos.sol#316)\n", + "markdown": "Reentrancy in [Ramos.rebalanceUpExit(uint256,uint256)](contracts/amo/Ramos.sol#L288-L320):\n\tExternal calls:\n\t- [amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))](contracts/amo/Ramos.sol#L297)\n\t- [protocolTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minProtocolTokenOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,protocolTokenBalancerPoolIndex,treasuryPriceIndex(),protocolToken)](contracts/amo/Ramos.sol#L300-L304)\n\t- [protocolToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L309)\n\tEvent emitted after the call(s):\n\t- [RebalanceUpExit(bptAmountIn,protocolTokenAmountOut,feeAmt)](contracts/amo/Ramos.sol#L316)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L288-L320", + "id": "f01702004594863e23f38f398fde5ec3a792ca5c4b26bd0a6b93e8dc1846cabf", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15773, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + }, + { + "type": "node", + "name": "tokenVault.borrowQuoteToken(quoteTokenAmountIn,address(this))", + "source_mapping": { + "start": 16123, + "length": 62, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 382 + ], + "starting_column": 9, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15773, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeTransfer(feeCollector,feeAmt)", + "source_mapping": { + "start": 16378, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 387 + ], + "starting_column": 13, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15773, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeTransfer(address(_poolHelper),joinAmountIn)", + "source_mapping": { + "start": 16619, + "length": 59, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 393 + ], + "starting_column": 9, + "ending_column": 68 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15773, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,quoteToken)", + "source_mapping": { + "start": 16728, + "length": 250, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 396, + 397, + 398, + 399 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15773, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RebalanceUpJoin(quoteTokenAmountIn,bptTokensStaked,feeAmt)", + "source_mapping": { + "start": 16988, + "length": 65, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 400 + ], + "starting_column": 9, + "ending_column": 74 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15773, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "swap(uint256)" - } - }, - { - "type": "node", - "name": "userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount)", - "source_mapping": { - "start": 6205, - "length": 70, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [140], - "starting_column": 9, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 5765, - "length": 517, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OtcOffer", - "source_mapping": { - "start": 847, - "length": 6468, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [ - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "swap(uint256)" + ], + "description": "Reentrancy in Ramos.rebalanceUpJoin(uint256,uint256) (contracts/amo/Ramos.sol#374-407):\n\tExternal calls:\n\t- tokenVault.borrowQuoteToken(quoteTokenAmountIn,address(this)) (contracts/amo/Ramos.sol#382)\n\t- quoteToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#387)\n\t- quoteToken.safeTransfer(address(_poolHelper),joinAmountIn) (contracts/amo/Ramos.sol#393)\n\t- bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,quoteToken) (contracts/amo/Ramos.sol#396-399)\n\tEvent emitted after the call(s):\n\t- RebalanceUpJoin(quoteTokenAmountIn,bptTokensStaked,feeAmt) (contracts/amo/Ramos.sol#400)\n", + "markdown": "Reentrancy in [Ramos.rebalanceUpJoin(uint256,uint256)](contracts/amo/Ramos.sol#L374-L407):\n\tExternal calls:\n\t- [tokenVault.borrowQuoteToken(quoteTokenAmountIn,address(this))](contracts/amo/Ramos.sol#L382)\n\t- [quoteToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L387)\n\t- [quoteToken.safeTransfer(address(_poolHelper),joinAmountIn)](contracts/amo/Ramos.sol#L393)\n\t- [bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,quoteToken)](contracts/amo/Ramos.sol#L396-L399)\n\tEvent emitted after the call(s):\n\t- [RebalanceUpJoin(quoteTokenAmountIn,bptTokensStaked,feeAmt)](contracts/amo/Ramos.sol#L400)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L374-L407", + "id": "d452854a083064df7259f0954835ef242ab535df19218e9bf3aaf9b81c9b26c1", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 10888, + "length": 197, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + }, + { + "type": "node", + "name": "IERC20(token).safeTransfer(to,amount)", + "source_mapping": { + "start": 10991, + "length": 38, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 273 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 10888, + "length": 197, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RecoveredToken(token,to,amount)", + "source_mapping": { + "start": 11040, + "length": 38, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 275 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 10888, + "length": 197, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "OtcOffer.swap(uint256) (contracts/core/OtcOffer.sol#131-141) uses arbitrary from in transferFrom: userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount) (contracts/core/OtcOffer.sol#140)\n", - "markdown": "[OtcOffer.swap(uint256)](contracts/core/OtcOffer.sol#L131-L141) uses arbitrary from in transferFrom: [userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount)](contracts/core/OtcOffer.sol#L140)\n", - "first_markdown_element": "contracts/core/OtcOffer.sol#L131-L141", - "id": "05d3d20016db7bcfcaa4746897ba0c55c97e64e9bbf77842db5d2e2d9ceae5fd", - "check": "arbitrary-send-erc20", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in Ramos.recoverToken(address,address,uint256) (contracts/amo/Ramos.sol#272-276):\n\tExternal calls:\n\t- IERC20(token).safeTransfer(to,amount) (contracts/amo/Ramos.sol#273)\n\tEvent emitted after the call(s):\n\t- RecoveredToken(token,to,amount) (contracts/amo/Ramos.sol#275)\n", + "markdown": "Reentrancy in [Ramos.recoverToken(address,address,uint256)](contracts/amo/Ramos.sol#L272-L276):\n\tExternal calls:\n\t- [IERC20(token).safeTransfer(to,amount)](contracts/amo/Ramos.sol#L273)\n\tEvent emitted after the call(s):\n\t- [RecoveredToken(token,to,amount)](contracts/amo/Ramos.sol#L275)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L272-L276", + "id": "15a59117d9f24ee76b20d5a5453f589570a7f156b421e560b9305927c9131e2c", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22407, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + }, + { + "type": "node", + "name": "amoStaking.withdrawAndUnwrap(bptIn,false,address(this))", + "source_mapping": { + "start": 23088, + "length": 57, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 539 + ], + "starting_column": 9, + "ending_column": 66 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22407, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "balancerVault.exitPool(balancerPoolId,address(this),address(this),request)", + "source_mapping": { + "start": 23155, + "length": 77, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 540 + ], + "starting_column": 9, + "ending_column": 86 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22407, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_tokenVault.repayProtocolToken(protocolTokenAmount)", + "source_mapping": { + "start": 23563, + "length": 51, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 549 + ], + "starting_column": 13, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22407, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_tokenVault.repayQuoteToken(quoteTokenAmount)", + "source_mapping": { + "start": 23675, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 553 + ], + "starting_column": 13, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22407, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "LiquidityRemoved(quoteTokenAmount,protocolTokenAmount,bptIn)", + "source_mapping": { + "start": 23741, + "length": 67, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 556 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22407, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24208, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - }, - { - "type": "node", - "name": "blockTimestamp = uint32(block.timestamp % 2 ** 32)", - "source_mapping": { - "start": 3302, - "length": 55, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [82], - "starting_column": 9, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" + ], + "description": "Reentrancy in Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256) (contracts/amo/Ramos.sol#520-557):\n\tExternal calls:\n\t- amoStaking.withdrawAndUnwrap(bptIn,false,address(this)) (contracts/amo/Ramos.sol#539)\n\t- balancerVault.exitPool(balancerPoolId,address(this),address(this),request) (contracts/amo/Ramos.sol#540)\n\t- _tokenVault.repayProtocolToken(protocolTokenAmount) (contracts/amo/Ramos.sol#549)\n\t- _tokenVault.repayQuoteToken(quoteTokenAmount) (contracts/amo/Ramos.sol#553)\n\tEvent emitted after the call(s):\n\t- LiquidityRemoved(quoteTokenAmount,protocolTokenAmount,bptIn) (contracts/amo/Ramos.sol#556)\n", + "markdown": "Reentrancy in [Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)](contracts/amo/Ramos.sol#L520-L557):\n\tExternal calls:\n\t- [amoStaking.withdrawAndUnwrap(bptIn,false,address(this))](contracts/amo/Ramos.sol#L539)\n\t- [balancerVault.exitPool(balancerPoolId,address(this),address(this),request)](contracts/amo/Ramos.sol#L540)\n\t- [_tokenVault.repayProtocolToken(protocolTokenAmount)](contracts/amo/Ramos.sol#L549)\n\t- [_tokenVault.repayQuoteToken(quoteTokenAmount)](contracts/amo/Ramos.sol#L553)\n\tEvent emitted after the call(s):\n\t- [LiquidityRemoved(quoteTokenAmount,protocolTokenAmount,bptIn)](contracts/amo/Ramos.sol#L556)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L520-L557", + "id": "58971ea68a44f13c3035e5c40470aed4ee35ec8780baec9e6fde35f1a56bae22", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 819, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31697, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + }, + { + "type": "node", + "name": "daiToken.approve(previousTrv,0)", + "source_mapping": { + "start": 16002, + "length": 32, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 394 + ], + "starting_column": 13, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 819, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31697, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "daiToken.forceApprove(_trv,type()(uint256).max)", + "source_mapping": { + "start": 16245, + "length": 46, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 402 + ], + "starting_column": 13, + "ending_column": 59 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 819, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31697, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "TlcStrategySet(newTlcStrategy,_trv)", + "source_mapping": { + "start": 16312, + "length": 41, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 405 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 819, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31697, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93) uses a weak PRNG: \"blockTimestamp = uint32(block.timestamp % 2 ** 32) (contracts/amm/TempleUniswapV2Pair.sol#82)\" \n", - "markdown": "[TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93) uses a weak PRNG: \"[blockTimestamp = uint32(block.timestamp % 2 ** 32)](contracts/amm/TempleUniswapV2Pair.sol#L82)\" \n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L80-L93", - "id": "290357789cffd43bf264062cb5a528e9a368f77182c65ce7dcfbd4feb9020833", - "check": "weak-prng", - "impact": "High", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "nonces", - "source_mapping": { - "start": 1578, - "length": 50, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [45], - "starting_column": 5, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ElderElection", - "source_mapping": { - "start": 908, - "length": 5057, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [ - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-409):\n\tExternal calls:\n\t- daiToken.approve(previousTrv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#394)\n\t- daiToken.forceApprove(_trv,type()(uint256).max) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#402)\n\tEvent emitted after the call(s):\n\t- TlcStrategySet(newTlcStrategy,_trv) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#405)\n", + "markdown": "Reentrancy in [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L409):\n\tExternal calls:\n\t- [daiToken.approve(previousTrv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)\n\t- [daiToken.forceApprove(_trv,type()(uint256).max)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L402)\n\tEvent emitted after the call(s):\n\t- [TlcStrategySet(newTlcStrategy,_trv)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L405)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L409", + "id": "c39c59a77f1824a150880b6907c47e451f7784419c1b3eab509e104e0a7eba72", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "relayedSetEndorsementsFor", + "source_mapping": { + "start": 3547, + "length": 759, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 906, + "length": 4629, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" + } + }, + { + "type": "node", + "name": "block.timestamp > req.deadline", + "source_mapping": { + "start": 4001, + "length": 30, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 124 + ], + "starting_column": 13, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "relayedSetEndorsementsFor", + "source_mapping": { + "start": 3547, + "length": 759, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 906, + "length": 4629, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" + } + } + } } - } - } - }, - { - "type": "function", - "name": "_useNonce", - "source_mapping": { - "start": 4540, - "length": 196, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [138, 139, 140, 141, 142], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ElderElection", - "source_mapping": { - "start": 908, - "length": 5057, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [ - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes) (contracts/governance/ElderElection.sol#112-129) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > req.deadline (contracts/governance/ElderElection.sol#124)\n", + "markdown": "[ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)](contracts/governance/ElderElection.sol#L112-L129) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > req.deadline](contracts/governance/ElderElection.sol#L124)\n", + "first_markdown_element": "contracts/governance/ElderElection.sol#L112-L129", + "id": "4f2e3008715f5b7ded6a3edbca5b15d9bd701fe712b26dc0b8f0cf235e35a1ef", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_initDebtTokenCache", + "source_mapping": { + "start": 24203, + "length": 1450, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31697, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)" + } + }, + { + "type": "node", + "name": "_timeElapsed > 0", + "source_mapping": { + "start": 25065, + "length": 16, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 640 + ], + "starting_column": 13, + "ending_column": 29 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_initDebtTokenCache", + "source_mapping": { + "start": 24203, + "length": 1450, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31697, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)" + } + } + } } - }, - "signature": "_useNonce(address)" - } - } - ], - "description": "ElderElection.nonces (contracts/governance/ElderElection.sol#45) is never initialized. It is used in:\n\t- ElderElection._useNonce(address) (contracts/governance/ElderElection.sol#138-142)\n", - "markdown": "[ElderElection.nonces](contracts/governance/ElderElection.sol#L45) is never initialized. It is used in:\n\t- [ElderElection._useNonce(address)](contracts/governance/ElderElection.sol#L138-L142)\n", - "first_markdown_element": "contracts/governance/ElderElection.sol#L45", - "id": "a16c4c3a7455ad8f717c8aaf616d23de5d06be103f191c78e6dc3fdbb5eff5e8", - "check": "uninitialized-state", - "impact": "High", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "calc", - "source_mapping": { - "start": 836, - "length": 613, - "filename_relative": "contracts/core/JoiningFee.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", - "filename_short": "contracts/core/JoiningFee.sol", - "is_dependency": false, - "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "JoiningFee", - "source_mapping": { - "start": 461, - "length": 1345, - "filename_relative": "contracts/core/JoiningFee.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", - "filename_short": "contracts/core/JoiningFee.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#618-657) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _timeElapsed > 0 (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#640)\n", + "markdown": "[TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L618-L657) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_timeElapsed > 0](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L640)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L618-L657", + "id": "195556f3bab1a462672097b00cd1340a45349779f22a9600cb865337be81d49e", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7866, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + }, + { + "type": "node", + "name": "treasuryReservesVault.borrow(daiToken,amount,address(this))", + "source_mapping": { + "start": 8015, + "length": 61, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 198 + ], + "starting_column": 9, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7866, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_dsrDeposit(amount)", + "source_mapping": { + "start": 8086, + "length": 19, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 199 + ], + "starting_column": 9, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7866, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "daiJoin.join(address(this),amount)", + "source_mapping": { + "start": 8399, + "length": 35, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 208 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8118, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5623, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pot.join(shares)", + "source_mapping": { + "start": 8444, + "length": 16, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 209 + ], + "starting_column": 9, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8118, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiDeposited(amount)", + "source_mapping": { + "start": 8364, + "length": 25, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 207 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8118, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrDeposit(amount)", + "source_mapping": { + "start": 8086, + "length": 19, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 199 + ], + "starting_column": 9, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7866, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "calc(uint256,uint256,address)" - } - }, - { - "type": "node", - "name": "(block.timestamp - (numCycles * periodDuration) - firstPeriodStartTimestamp) / 3600 * feePerHour", - "source_mapping": { - "start": 1339, - "length": 103, - "filename_relative": "contracts/core/JoiningFee.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", - "filename_short": "contracts/core/JoiningFee.sol", - "is_dependency": false, - "lines": [38], - "starting_column": 9, - "ending_column": 112 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "calc", - "source_mapping": { - "start": 836, - "length": 613, - "filename_relative": "contracts/core/JoiningFee.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", - "filename_short": "contracts/core/JoiningFee.sol", - "is_dependency": false, - "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "JoiningFee", - "source_mapping": { - "start": 461, - "length": 1345, - "filename_relative": "contracts/core/JoiningFee.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", - "filename_short": "contracts/core/JoiningFee.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "calc(uint256,uint256,address)" + ], + "description": "Reentrancy in DsrBaseStrategy.borrowAndDeposit(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#196-200):\n\tExternal calls:\n\t- treasuryReservesVault.borrow(daiToken,amount,address(this)) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#199)\n\t\t- daiJoin.join(address(this),amount) (contracts/v2/strategies/DsrBaseStrategy.sol#208)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#143)\n\t\t- pot.join(shares) (contracts/v2/strategies/DsrBaseStrategy.sol#209)\n\tEvent emitted after the call(s):\n\t- DaiDeposited(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#207)\n\t\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#199)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.borrowAndDeposit(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L196-L200):\n\tExternal calls:\n\t- [treasuryReservesVault.borrow(daiToken,amount,address(this))](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L199)\n\t\t- [daiJoin.join(address(this),amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L208)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L143)\n\t\t- [pot.join(shares)](contracts/v2/strategies/DsrBaseStrategy.sol#L209)\n\tEvent emitted after the call(s):\n\t- [DaiDeposited(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L207)\n\t\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L199)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L196-L200", + "id": "2ee7f532bcd998657414bedd1a8c0e1884efa2ba7d4a4d28e8332abdc305b488", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5308, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + }, + { + "type": "node", + "name": "cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration", + "source_mapping": { + "start": 5646, + "length": 76, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5308, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } + }, + { + "type": "node", + "name": "inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp", + "source_mapping": { + "start": 5732, + "length": 138, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 147 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5308, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } } - } - } - } - ], - "description": "JoiningFee.calc(uint256,uint256,address) (contracts/core/JoiningFee.sol#26-39) performs a multiplication on the result of a division:\n\t- (block.timestamp - (numCycles * periodDuration) - firstPeriodStartTimestamp) / 3600 * feePerHour (contracts/core/JoiningFee.sol#38)\n", - "markdown": "[JoiningFee.calc(uint256,uint256,address)](contracts/core/JoiningFee.sol#L26-L39) performs a multiplication on the result of a division:\n\t- [(block.timestamp - (numCycles * periodDuration) - firstPeriodStartTimestamp) / 3600 * feePerHour](contracts/core/JoiningFee.sol#L38)\n", - "first_markdown_element": "contracts/core/JoiningFee.sol#L26-L39", - "id": "c0d4beb09bbb97e4ec3e7a9e3bd4fc713e216c086a2436671c0e4fdbaa26965b", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "inEnterExitWindow", - "source_mapping": { - "start": 5359, - "length": 569, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143, 144, 145, 146, 147, 148], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Vault.inEnterExitWindow() (contracts/core/Vault.sol#136-144) performs a multiplication on the result of a division:\n\t- cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration (contracts/core/Vault.sol#142)\n\t- inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp (contracts/core/Vault.sol#143)\n", + "markdown": "[Vault.inEnterExitWindow()](contracts/core/Vault.sol#L136-L144) performs a multiplication on the result of a division:\n\t- [cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration](contracts/core/Vault.sol#L142)\n\t- [inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp](contracts/core/Vault.sol#L143)\n", + "first_markdown_element": "contracts/core/Vault.sol#L136-L144", + "id": "8c7714b71ec341b6d2099880abd107a6f2fea28b8e3eacb52ca0a2b093c07ec7", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "amountPerShare", + "source_mapping": { + "start": 4930, + "length": 372, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "amountPerShare()" + } + }, + { + "type": "node", + "name": "p == 0", + "source_mapping": { + "start": 5206, + "length": 6, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 127 + ], + "starting_column": 13, + "ending_column": 19 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "amountPerShare", + "source_mapping": { + "start": 4930, + "length": 372, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "amountPerShare()" + } + } + } } - }, - "signature": "inEnterExitWindow()" - } - }, - { - "type": "node", - "name": "cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration", - "source_mapping": { - "start": 5697, - "length": 76, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [146], - "starting_column": 9, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "inEnterExitWindow", - "source_mapping": { - "start": 5359, - "length": 569, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143, 144, 145, 146, 147, 148], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "inEnterExitWindow()" + ], + "description": "Vault.amountPerShare() (contracts/core/Vault.sol#121-134) uses a dangerous strict equality:\n\t- p == 0 (contracts/core/Vault.sol#127)\n", + "markdown": "[Vault.amountPerShare()](contracts/core/Vault.sol#L121-L134) uses a dangerous strict equality:\n\t- [p == 0](contracts/core/Vault.sol#L127)\n", + "first_markdown_element": "contracts/core/Vault.sol#L121-L134", + "id": "de749cfce8ce80cfe760160d413ea1c1c688ac04215e9656e646ee64ebe27c1c", + "check": "incorrect-equality", + "impact": "Medium", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "_vaultedTempleAccount", + "source_mapping": { + "start": 2726, + "length": 29, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 65 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2577, + "length": 838, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)" + } + } + } + }, + { + "type": "node", + "name": "vaultedTempleAccount = _vaultedTempleAccount", + "source_mapping": { + "start": 3116, + "length": 44, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 74 + ], + "starting_column": 9, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2577, + "length": 838, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp", - "source_mapping": { - "start": 5783, - "length": 138, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [147], - "starting_column": 9, - "ending_column": 147 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "inEnterExitWindow", - "source_mapping": { - "start": 5359, - "length": 569, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143, 144, 145, 146, 147, 148], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "inEnterExitWindow()" + ], + "description": "Vault.constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)._vaultedTempleAccount (contracts/core/Vault.sol#65) lacks a zero-check on :\n\t\t- vaultedTempleAccount = _vaultedTempleAccount (contracts/core/Vault.sol#74)\n", + "markdown": "[Vault.constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)._vaultedTempleAccount](contracts/core/Vault.sol#L65) lacks a zero-check on :\n\t\t- [vaultedTempleAccount = _vaultedTempleAccount](contracts/core/Vault.sol#L74)\n", + "first_markdown_element": "contracts/core/Vault.sol#L65", + "id": "ec8f5d8d5e84e67e63f7cfdbd240113b25d7e450ff6b895abf8718c03e3b752b", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "redeemExposures", + "source_mapping": { + "start": 4673, + "length": 251, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "redeemExposures(Exposure[])" + } + }, + { + "type": "node", + "name": "exposures[i].redeem()", + "source_mapping": { + "start": 4817, + "length": 21, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 115 + ], + "starting_column": 13, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "redeemExposures", + "source_mapping": { + "start": 4673, + "length": 251, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "redeemExposures(Exposure[])" + } + } + } } - } - } - } - ], - "description": "Vault.inEnterExitWindow() (contracts/core/Vault.sol#140-148) performs a multiplication on the result of a division:\n\t- cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration (contracts/core/Vault.sol#146)\n\t- inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp (contracts/core/Vault.sol#147)\n", - "markdown": "[Vault.inEnterExitWindow()](contracts/core/Vault.sol#L140-L148) performs a multiplication on the result of a division:\n\t- [cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration](contracts/core/Vault.sol#L146)\n\t- [inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp](contracts/core/Vault.sol#L147)\n", - "first_markdown_element": "contracts/core/Vault.sol#L140-L148", - "id": "3aabd4762a2fde5d3ca708a653713c64a4f9b65daaecb672955c03acd76d5927", - "check": "divide-before-multiply", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Vault.redeemExposures(Exposure[]) (contracts/core/Vault.sol#113-119) has external calls inside a loop: exposures[i].redeem() (contracts/core/Vault.sol#115)\n", + "markdown": "[Vault.redeemExposures(Exposure[])](contracts/core/Vault.sol#L113-L119) has external calls inside a loop: [exposures[i].redeem()](contracts/core/Vault.sol#L115)\n", + "first_markdown_element": "contracts/core/Vault.sol#L113-L119", + "id": "01aa5d049bc48e72ff906b543385ff9caecb8e5566910551f607713f18675e33", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 6905, + "length": 779, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount)", + "source_mapping": { + "start": 7467, + "length": 82, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 187 + ], + "starting_column": 13, + "ending_column": 95 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 6905, + "length": 779, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "templeExposureToken.mint(address(this),_amount)", + "source_mapping": { + "start": 7563, + "length": 48, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 188 + ], + "starting_column": 13, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 6905, + "length": 779, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Deposit(_account,_amount,amountStaked)", + "source_mapping": { + "start": 7632, + "length": 45, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 191 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 6905, + "length": 779, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - }, - { - "type": "node", - "name": "require(bool,string)(success && (data.length == 0 || abi.decode(data,(bool))),UniswapV2: TRANSFER_FAILED)", - "source_mapping": { - "start": 2073, - "length": 96, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [51], - "starting_column": 9, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" + ], + "description": "Reentrancy in Vault.depositFor(address,uint256) (contracts/core/Vault.sol#176-192):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount) (contracts/core/Vault.sol#187)\n\t- templeExposureToken.mint(address(this),_amount) (contracts/core/Vault.sol#188)\n\tEvent emitted after the call(s):\n\t- Deposit(_account,_amount,amountStaked) (contracts/core/Vault.sol#191)\n", + "markdown": "Reentrancy in [Vault.depositFor(address,uint256)](contracts/core/Vault.sol#L176-L192):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount)](contracts/core/Vault.sol#L187)\n\t- [templeExposureToken.mint(address(this),_amount)](contracts/core/Vault.sol#L188)\n\tEvent emitted after the call(s):\n\t- [Deposit(_account,_amount,amountStaked)](contracts/core/Vault.sol#L191)\n", + "first_markdown_element": "contracts/core/Vault.sol#L176-L192", + "id": "9b7f364b05b547bddc816a0d5b06d8980808dad51839e6d4b0a54fad3ee65e71", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 8008, + "length": 355, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,address,uint256)" + } + }, + { + "type": "node", + "name": "templeExposureToken.redeemAmount(_amount,_to)", + "source_mapping": { + "start": 8268, + "length": 46, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 207 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 8008, + "length": 355, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Withdraw(_account,_amount)", + "source_mapping": { + "start": 8324, + "length": 32, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 208 + ], + "starting_column": 9, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 8008, + "length": 355, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleUniswapV2Pair._safeTransfer(address,address,uint256) (contracts/amm/TempleUniswapV2Pair.sol#49-52) uses a dangerous strict equality:\n\t- require(bool,string)(success && (data.length == 0 || abi.decode(data,(bool))),UniswapV2: TRANSFER_FAILED) (contracts/amm/TempleUniswapV2Pair.sol#51)\n", - "markdown": "[TempleUniswapV2Pair._safeTransfer(address,address,uint256)](contracts/amm/TempleUniswapV2Pair.sol#L49-L52) uses a dangerous strict equality:\n\t- [require(bool,string)(success && (data.length == 0 || abi.decode(data,(bool))),UniswapV2: TRANSFER_FAILED)](contracts/amm/TempleUniswapV2Pair.sol#L51)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L49-L52", - "id": "2ee4045d0f377d6f8b394394680249a386668a22c42975e90902df9d8fa3b850", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "mint", - "source_mapping": { - "start": 4063, - "length": 1069, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in Vault.withdrawFor(address,address,uint256) (contracts/core/Vault.sol#200-209):\n\tExternal calls:\n\t- templeExposureToken.redeemAmount(_amount,_to) (contracts/core/Vault.sol#207)\n\tEvent emitted after the call(s):\n\t- Withdraw(_account,_amount) (contracts/core/Vault.sol#208)\n", + "markdown": "Reentrancy in [Vault.withdrawFor(address,address,uint256)](contracts/core/Vault.sol#L200-L209):\n\tExternal calls:\n\t- [templeExposureToken.redeemAmount(_amount,_to)](contracts/core/Vault.sol#L207)\n\tEvent emitted after the call(s):\n\t- [Withdraw(_account,_amount)](contracts/core/Vault.sol#L208)\n", + "first_markdown_element": "contracts/core/Vault.sol#L200-L209", + "id": "2ff96324c82420cceeabf74c571ad57f47606117de95c992bffac11206a305e2", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 3881, + "length": 543, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)" + } + }, + { + "type": "node", + "name": "require(bool,string)(block.timestamp <= deadline,Vault: expired deadline)", + "source_mapping": { + "start": 3999, + "length": 63, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 97 + ], + "starting_column": 9, + "ending_column": 72 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 3881, + "length": 543, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)" + } + } + } } - }, - "signature": "mint(address)" - } - }, - { - "type": "node", - "name": "_totalSupply == 0", - "source_mapping": { - "start": 4568, - "length": 17, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [104], - "starting_column": 13, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "mint", - "source_mapping": { - "start": 4063, - "length": 1069, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "mint(address)" + ], + "description": "Vault.withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32) (contracts/core/Vault.sol#96-106) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(block.timestamp <= deadline,Vault: expired deadline) (contracts/core/Vault.sol#97)\n", + "markdown": "[Vault.withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)](contracts/core/Vault.sol#L96-L106) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(block.timestamp <= deadline,Vault: expired deadline)](contracts/core/Vault.sol#L97)\n", + "first_markdown_element": "contracts/core/Vault.sol#L96-L106", + "id": "f068d8a851d72d0e6aff89812664a80d33b8197abca1bbd0f276ffb2d0976be9", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5308, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + }, + { + "type": "node", + "name": "block.timestamp < firstPeriodStartTimestamp", + "source_mapping": { + "start": 5408, + "length": 43, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 137 + ], + "starting_column": 13, + "ending_column": 56 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5308, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } + }, + { + "type": "node", + "name": "inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp", + "source_mapping": { + "start": 5732, + "length": 138, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 147 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5308, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1182, + "length": 7311, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } } - } - } - } - ], - "description": "TempleUniswapV2Pair.mint(address) (contracts/amm/TempleUniswapV2Pair.sol#96-115) uses a dangerous strict equality:\n\t- _totalSupply == 0 (contracts/amm/TempleUniswapV2Pair.sol#104)\n", - "markdown": "[TempleUniswapV2Pair.mint(address)](contracts/amm/TempleUniswapV2Pair.sol#L96-L115) uses a dangerous strict equality:\n\t- [_totalSupply == 0](contracts/amm/TempleUniswapV2Pair.sol#L104)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L96-L115", - "id": "f3faa53f859ed259e9ff2509250c109f539dc4c8a41ed53a9c3a3342c73a4cea", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "amountPerShare", - "source_mapping": { - "start": 4981, - "length": 372, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Vault.inEnterExitWindow() (contracts/core/Vault.sol#136-144) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp < firstPeriodStartTimestamp (contracts/core/Vault.sol#137)\n\t- inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp (contracts/core/Vault.sol#143)\n", + "markdown": "[Vault.inEnterExitWindow()](contracts/core/Vault.sol#L136-L144) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp < firstPeriodStartTimestamp](contracts/core/Vault.sol#L137)\n\t- [inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp](contracts/core/Vault.sol#L143)\n", + "first_markdown_element": "contracts/core/Vault.sol#L136-L144", + "id": "98e47a8cf8913fe5f00789bc8f3a53fa3c1e0e9b8b92efcdb9b5ef3830020ac1", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "relayedSetEndorsementsFor", + "source_mapping": { + "start": 3591, + "length": 777, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 906, + "length": 4691, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" + } + }, + { + "type": "node", + "name": "block.timestamp > req.deadline", + "source_mapping": { + "start": 4063, + "length": 30, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 125 + ], + "starting_column": 13, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "relayedSetEndorsementsFor", + "source_mapping": { + "start": 3591, + "length": 777, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 906, + "length": 4691, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" + } + } + } } - }, - "signature": "amountPerShare()" - } - }, - { - "type": "node", - "name": "p == 0", - "source_mapping": { - "start": 5257, - "length": 6, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [131], - "starting_column": 13, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "amountPerShare", - "source_mapping": { - "start": 4981, - "length": 372, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "amountPerShare()" - } - } - } - } - ], - "description": "Vault.amountPerShare() (contracts/core/Vault.sol#125-138) uses a dangerous strict equality:\n\t- p == 0 (contracts/core/Vault.sol#131)\n", - "markdown": "[Vault.amountPerShare()](contracts/core/Vault.sol#L125-L138) uses a dangerous strict equality:\n\t- [p == 0](contracts/core/Vault.sol#L131)\n", - "first_markdown_element": "contracts/core/Vault.sol#L125-L138", - "id": "4158c1e69d81519dc5989e6d6c111d02083aaaabb931ca68f7b53bccf0ab30fa", - "check": "incorrect-equality", - "impact": "Medium", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - }, - { - "type": "node", - "name": "_safeTransfer(_token0,to,amount0)", - "source_mapping": { - "start": 6213, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [131], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_safeTransfer(_token1,to,amount1)", - "source_mapping": { - "start": 6258, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [132], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 6426, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [136], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "blockTimestampLast" - } - }, - { - "type": "node", - "name": "blockTimestampLast = blockTimestamp", - "source_mapping": { - "start": 3873, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "blockTimestampLast" - } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 6426, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [136], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "reserve0" - } - }, - { - "type": "node", - "name": "reserve0 = uint112(balance0)", - "source_mapping": { - "start": 3797, - "length": 28, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [89], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "reserve0" - } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 6426, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [136], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "reserve1" - } - }, - { - "type": "node", - "name": "reserve1 = uint112(balance1)", - "source_mapping": { - "start": 3835, - "length": 28, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [90], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "reserve1" - } - } - ], - "description": "Reentrancy in TempleUniswapV2Pair.burn(address) (contracts/amm/TempleUniswapV2Pair.sol#118-138):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0) (contracts/amm/TempleUniswapV2Pair.sol#131)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1) (contracts/amm/TempleUniswapV2Pair.sol#132)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\tState variables written after the call(s):\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- blockTimestampLast = blockTimestamp (contracts/amm/TempleUniswapV2Pair.sol#91)\n\tTempleUniswapV2Pair.blockTimestampLast (contracts/amm/TempleUniswapV2Pair.sol#25) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- reserve0 = uint112(balance0) (contracts/amm/TempleUniswapV2Pair.sol#89)\n\tTempleUniswapV2Pair.reserve0 (contracts/amm/TempleUniswapV2Pair.sol#23) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- TempleUniswapV2Pair.skim(address) (contracts/amm/TempleUniswapV2Pair.sol#173-178)\n\t- TempleUniswapV2Pair.sync() (contracts/amm/TempleUniswapV2Pair.sol#181-183)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- reserve1 = uint112(balance1) (contracts/amm/TempleUniswapV2Pair.sol#90)\n\tTempleUniswapV2Pair.reserve1 (contracts/amm/TempleUniswapV2Pair.sol#24) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- TempleUniswapV2Pair.skim(address) (contracts/amm/TempleUniswapV2Pair.sol#173-178)\n\t- TempleUniswapV2Pair.sync() (contracts/amm/TempleUniswapV2Pair.sol#181-183)\n", - "markdown": "Reentrancy in [TempleUniswapV2Pair.burn(address)](contracts/amm/TempleUniswapV2Pair.sol#L118-L138):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0)](contracts/amm/TempleUniswapV2Pair.sol#L131)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1)](contracts/amm/TempleUniswapV2Pair.sol#L132)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\tState variables written after the call(s):\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [blockTimestampLast = blockTimestamp](contracts/amm/TempleUniswapV2Pair.sol#L91)\n\t[TempleUniswapV2Pair.blockTimestampLast](contracts/amm/TempleUniswapV2Pair.sol#L25) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [reserve0 = uint112(balance0)](contracts/amm/TempleUniswapV2Pair.sol#L89)\n\t[TempleUniswapV2Pair.reserve0](contracts/amm/TempleUniswapV2Pair.sol#L23) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [TempleUniswapV2Pair.skim(address)](contracts/amm/TempleUniswapV2Pair.sol#L173-L178)\n\t- [TempleUniswapV2Pair.sync()](contracts/amm/TempleUniswapV2Pair.sol#L181-L183)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [reserve1 = uint112(balance1)](contracts/amm/TempleUniswapV2Pair.sol#L90)\n\t[TempleUniswapV2Pair.reserve1](contracts/amm/TempleUniswapV2Pair.sol#L24) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [TempleUniswapV2Pair.skim(address)](contracts/amm/TempleUniswapV2Pair.sol#L173-L178)\n\t- [TempleUniswapV2Pair.sync()](contracts/amm/TempleUniswapV2Pair.sol#L181-L183)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L118-L138", - "id": "0379a89cc8645c2b5e10653eb1e7b3fe6480ded71ea4fc2c34965051d126019a", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - }, - { - "type": "node", - "name": "_safeTransfer(_token0,to,amount0Out)", - "source_mapping": { - "start": 7388, - "length": 38, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [153], - "starting_column": 29, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_safeTransfer(_token1,to,amount1Out)", - "source_mapping": { - "start": 7490, - "length": 38, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [154], - "starting_column": 29, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)", - "source_mapping": { - "start": 7593, - "length": 76, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [155], - "starting_column": 30, - "ending_column": 106 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 8457, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [168], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "blockTimestampLast" - } - }, - { - "type": "node", - "name": "blockTimestampLast = blockTimestamp", - "source_mapping": { - "start": 3873, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "blockTimestampLast" - } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 8457, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [168], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "reserve0" - } - }, - { - "type": "node", - "name": "reserve0 = uint112(balance0)", - "source_mapping": { - "start": 3797, - "length": 28, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [89], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "reserve0" - } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 8457, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [168], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "reserve1" - } - }, - { - "type": "node", - "name": "reserve1 = uint112(balance1)", - "source_mapping": { - "start": 3835, - "length": 28, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [90], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "reserve1" - } - } - ], - "description": "Reentrancy in TempleUniswapV2Pair.swap(uint256,uint256,address,bytes) (contracts/amm/TempleUniswapV2Pair.sol#141-170):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0Out) (contracts/amm/TempleUniswapV2Pair.sol#153)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1Out) (contracts/amm/TempleUniswapV2Pair.sol#154)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data) (contracts/amm/TempleUniswapV2Pair.sol#155)\n\tState variables written after the call(s):\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- blockTimestampLast = blockTimestamp (contracts/amm/TempleUniswapV2Pair.sol#91)\n\tTempleUniswapV2Pair.blockTimestampLast (contracts/amm/TempleUniswapV2Pair.sol#25) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- reserve0 = uint112(balance0) (contracts/amm/TempleUniswapV2Pair.sol#89)\n\tTempleUniswapV2Pair.reserve0 (contracts/amm/TempleUniswapV2Pair.sol#23) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- TempleUniswapV2Pair.skim(address) (contracts/amm/TempleUniswapV2Pair.sol#173-178)\n\t- TempleUniswapV2Pair.sync() (contracts/amm/TempleUniswapV2Pair.sol#181-183)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- reserve1 = uint112(balance1) (contracts/amm/TempleUniswapV2Pair.sol#90)\n\tTempleUniswapV2Pair.reserve1 (contracts/amm/TempleUniswapV2Pair.sol#24) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- TempleUniswapV2Pair.skim(address) (contracts/amm/TempleUniswapV2Pair.sol#173-178)\n\t- TempleUniswapV2Pair.sync() (contracts/amm/TempleUniswapV2Pair.sol#181-183)\n", - "markdown": "Reentrancy in [TempleUniswapV2Pair.swap(uint256,uint256,address,bytes)](contracts/amm/TempleUniswapV2Pair.sol#L141-L170):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0Out)](contracts/amm/TempleUniswapV2Pair.sol#L153)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1Out)](contracts/amm/TempleUniswapV2Pair.sol#L154)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)](contracts/amm/TempleUniswapV2Pair.sol#L155)\n\tState variables written after the call(s):\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [blockTimestampLast = blockTimestamp](contracts/amm/TempleUniswapV2Pair.sol#L91)\n\t[TempleUniswapV2Pair.blockTimestampLast](contracts/amm/TempleUniswapV2Pair.sol#L25) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [reserve0 = uint112(balance0)](contracts/amm/TempleUniswapV2Pair.sol#L89)\n\t[TempleUniswapV2Pair.reserve0](contracts/amm/TempleUniswapV2Pair.sol#L23) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [TempleUniswapV2Pair.skim(address)](contracts/amm/TempleUniswapV2Pair.sol#L173-L178)\n\t- [TempleUniswapV2Pair.sync()](contracts/amm/TempleUniswapV2Pair.sol#L181-L183)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [reserve1 = uint112(balance1)](contracts/amm/TempleUniswapV2Pair.sol#L90)\n\t[TempleUniswapV2Pair.reserve1](contracts/amm/TempleUniswapV2Pair.sol#L24) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [TempleUniswapV2Pair.skim(address)](contracts/amm/TempleUniswapV2Pair.sol#L173-L178)\n\t- [TempleUniswapV2Pair.sync()](contracts/amm/TempleUniswapV2Pair.sol#L181-L183)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L141-L170", - "id": "5cdaaff3e567de31630793ad7f06e2a605da21349f80f6007c70ec2bd319fbc0", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_burnDToken", - "source_mapping": { - "start": 29999, - "length": 1179, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - }, - { - "type": "node", - "name": "_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)", - "source_mapping": { - "start": 30398, - "length": 71, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [688], - "starting_column": 9, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_burnDToken", - "source_mapping": { - "start": 29999, - "length": 1179, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes) (contracts/governance/ElderElection.sol#113-130) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > req.deadline (contracts/governance/ElderElection.sol#125)\n", + "markdown": "[ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)](contracts/governance/ElderElection.sol#L113-L130) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > req.deadline](contracts/governance/ElderElection.sol#L125)\n", + "first_markdown_element": "contracts/governance/ElderElection.sol#L113-L130", + "id": "31d44efcaba3f32313f62c26600e07feb7aba4d64fcce96eecdf1f4369fe9158", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "inEnterExitWindow", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_tokenCredits[token] = _creditBalance", - "source_mapping": { - "start": 31023, - "length": 37, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [705], - "starting_column": 13, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_burnDToken", - "source_mapping": { - "start": 29999, - "length": 1179, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 5447, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + }, + { + "type": "node", + "name": "cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "strategyTokenCredits" - } - } - ], - "description": "Reentrancy in TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#677-709):\n\tExternal calls:\n\t- _burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount) (contracts/v2/TreasuryReservesVault.sol#688)\n\tState variables written after the call(s):\n\t- _tokenCredits[token] = _creditBalance (contracts/v2/TreasuryReservesVault.sol#705)\n\tTreasuryReservesVault.strategyTokenCredits (contracts/v2/TreasuryReservesVault.sol#78) can be used in cross function reentrancies:\n\t- TreasuryReservesVault._availableForStrategyToBorrow(address,ITreasuryReservesVault.StrategyConfig,IERC20,uint256) (contracts/v2/TreasuryReservesVault.sol#533-551)\n\t- TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#677-709)\n\t- TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#638-670)\n\t- TreasuryReservesVault.setStrategyDebtCeiling(address,IERC20,uint256) (contracts/v2/TreasuryReservesVault.sol#242-255)\n\t- TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319)\n\t- TreasuryReservesVault.strategyBalanceSheet(address) (contracts/v2/TreasuryReservesVault.sol#447-467)\n\t- TreasuryReservesVault.strategyTokenCredits (contracts/v2/TreasuryReservesVault.sol#78)\n", - "markdown": "Reentrancy in [TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L677-L709):\n\tExternal calls:\n\t- [_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)](contracts/v2/TreasuryReservesVault.sol#L688)\n\tState variables written after the call(s):\n\t- [_tokenCredits[token] = _creditBalance](contracts/v2/TreasuryReservesVault.sol#L705)\n\t[TreasuryReservesVault.strategyTokenCredits](contracts/v2/TreasuryReservesVault.sol#L78) can be used in cross function reentrancies:\n\t- [TreasuryReservesVault._availableForStrategyToBorrow(address,ITreasuryReservesVault.StrategyConfig,IERC20,uint256)](contracts/v2/TreasuryReservesVault.sol#L533-L551)\n\t- [TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L677-L709)\n\t- [TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L638-L670)\n\t- [TreasuryReservesVault.setStrategyDebtCeiling(address,IERC20,uint256)](contracts/v2/TreasuryReservesVault.sol#L242-L255)\n\t- [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319)\n\t- [TreasuryReservesVault.strategyBalanceSheet(address)](contracts/v2/TreasuryReservesVault.sol#L447-L467)\n\t- [TreasuryReservesVault.strategyTokenCredits](contracts/v2/TreasuryReservesVault.sol#L78)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L677-L709", - "id": "c8932bc3a4a8bcb7213dd16df3325de16b2cfe251691839c0d5db322cdde8cc6", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_mintDToken", - "source_mapping": { - "start": 28533, - "length": 1205, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - }, - { - "type": "node", - "name": "tokenConfig.dToken.mint(strategy,_newDebt)", - "source_mapping": { - "start": 29294, - "length": 43, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [657], - "starting_column": 13, - "ending_column": 56 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_mintDToken", - "source_mapping": { - "start": 28533, - "length": 1205, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 5785, + "length": 76, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 147 + ], + "starting_column": 9, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5447, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } + }, + { + "type": "node", + "name": "inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + "start": 5871, + "length": 138, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 148 + ], + "starting_column": 9, + "ending_column": 147 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5447, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_tokenCredits[token] = _creditBalance = 0", - "source_mapping": { - "start": 29387, - "length": 41, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [660], - "starting_column": 13, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_mintDToken", - "source_mapping": { - "start": 28533, - "length": 1205, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "Vault.inEnterExitWindow() (contracts/core/Vault.sol#141-149) performs a multiplication on the result of a division:\n\t- cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration (contracts/core/Vault.sol#147)\n\t- inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp (contracts/core/Vault.sol#148)\n", + "markdown": "[Vault.inEnterExitWindow()](contracts/core/Vault.sol#L141-L149) performs a multiplication on the result of a division:\n\t- [cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration](contracts/core/Vault.sol#L147)\n\t- [inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp](contracts/core/Vault.sol#L148)\n", + "first_markdown_element": "contracts/core/Vault.sol#L141-L149", + "id": "717be346e746998493674019982fb46e250c4f72fd211eec2ef2f3fd9e2a9c0a", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "amountPerShare", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "strategyTokenCredits" - } - } - ], - "description": "Reentrancy in TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#638-670):\n\tExternal calls:\n\t- tokenConfig.dToken.mint(strategy,_newDebt) (contracts/v2/TreasuryReservesVault.sol#657)\n\tState variables written after the call(s):\n\t- _tokenCredits[token] = _creditBalance = 0 (contracts/v2/TreasuryReservesVault.sol#660)\n\tTreasuryReservesVault.strategyTokenCredits (contracts/v2/TreasuryReservesVault.sol#78) can be used in cross function reentrancies:\n\t- TreasuryReservesVault._availableForStrategyToBorrow(address,ITreasuryReservesVault.StrategyConfig,IERC20,uint256) (contracts/v2/TreasuryReservesVault.sol#533-551)\n\t- TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#677-709)\n\t- TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#638-670)\n\t- TreasuryReservesVault.setStrategyDebtCeiling(address,IERC20,uint256) (contracts/v2/TreasuryReservesVault.sol#242-255)\n\t- TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319)\n\t- TreasuryReservesVault.strategyBalanceSheet(address) (contracts/v2/TreasuryReservesVault.sol#447-467)\n\t- TreasuryReservesVault.strategyTokenCredits (contracts/v2/TreasuryReservesVault.sol#78)\n", - "markdown": "Reentrancy in [TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L638-L670):\n\tExternal calls:\n\t- [tokenConfig.dToken.mint(strategy,_newDebt)](contracts/v2/TreasuryReservesVault.sol#L657)\n\tState variables written after the call(s):\n\t- [_tokenCredits[token] = _creditBalance = 0](contracts/v2/TreasuryReservesVault.sol#L660)\n\t[TreasuryReservesVault.strategyTokenCredits](contracts/v2/TreasuryReservesVault.sol#L78) can be used in cross function reentrancies:\n\t- [TreasuryReservesVault._availableForStrategyToBorrow(address,ITreasuryReservesVault.StrategyConfig,IERC20,uint256)](contracts/v2/TreasuryReservesVault.sol#L533-L551)\n\t- [TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L677-L709)\n\t- [TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L638-L670)\n\t- [TreasuryReservesVault.setStrategyDebtCeiling(address,IERC20,uint256)](contracts/v2/TreasuryReservesVault.sol#L242-L255)\n\t- [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319)\n\t- [TreasuryReservesVault.strategyBalanceSheet(address)](contracts/v2/TreasuryReservesVault.sol#L447-L467)\n\t- [TreasuryReservesVault.strategyTokenCredits](contracts/v2/TreasuryReservesVault.sol#L78)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L638-L670", - "id": "0ce7ad9bcbc81412efd61c0340786d494f3510ea2cdeb81edb9c0103d00c0d0c", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, - 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - }, - { - "type": "node", - "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", - "source_mapping": { - "start": 7012, - "length": 118, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [173, 174, 175, 176, 177], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_accountData.collateral = _collateral - amount", - "source_mapping": { - "start": 7229, - "length": 46, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [180], - "starting_column": 9, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "allAccountsData" - } - } - ], - "description": "Reentrancy in TempleLineOfCredit.removeCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#166-190):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#173-177)\n\tState variables written after the call(s):\n\t- _accountData.collateral = _collateral - amount (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#180)\n\tTempleLineOfCredit.allAccountsData (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#68) can be used in cross function reentrancies:\n\t- TempleLineOfCredit.accountData(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#540-546)\n\t- TempleLineOfCredit.accountPosition(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#484-503)\n\t- TempleLineOfCredit.addCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#145-159)\n\t- TempleLineOfCredit.batchLiquidate(address[]) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#318-359)\n\t- TempleLineOfCredit.borrow(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#205-242)\n\t- TempleLineOfCredit.computeLiquidity(address[]) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#523-535)\n\t- TempleLineOfCredit.removeCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#166-190)\n\t- TempleLineOfCredit.repay(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#253-280)\n\t- TempleLineOfCredit.repayAll(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#287-305)\n", - "markdown": "Reentrancy in [TempleLineOfCredit.removeCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L173-L177)\n\tState variables written after the call(s):\n\t- [_accountData.collateral = _collateral - amount](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L180)\n\t[TempleLineOfCredit.allAccountsData](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L68) can be used in cross function reentrancies:\n\t- [TempleLineOfCredit.accountData(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L540-L546)\n\t- [TempleLineOfCredit.accountPosition(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L484-L503)\n\t- [TempleLineOfCredit.addCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L145-L159)\n\t- [TempleLineOfCredit.batchLiquidate(address[])](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318-L359)\n\t- [TempleLineOfCredit.borrow(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L205-L242)\n\t- [TempleLineOfCredit.computeLiquidity(address[])](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L523-L535)\n\t- [TempleLineOfCredit.removeCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190)\n\t- [TempleLineOfCredit.repay(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L253-L280)\n\t- [TempleLineOfCredit.repayAll(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L287-L305)\n", - "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190", - "id": "dffbe20bcc1c2f91394c175a10bd84f3964c2b4101e0079bbddcef08bf456d02", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "setTlcStrategy", - "source_mapping": { - "start": 15688, - "length": 875, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, - 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTlcStrategy(address)" - } - }, - { - "type": "node", - "name": "daiToken.safeApprove(previousTrv,0)", - "source_mapping": { - "start": 16002, - "length": 36, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [394], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTlcStrategy", - "source_mapping": { - "start": 15688, - "length": 875, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTlcStrategy(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "treasuryReservesVault = ITreasuryReservesVault(_trv)", - "source_mapping": { - "start": 16128, - "length": 52, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [398], - "starting_column": 9, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTlcStrategy", - "source_mapping": { - "start": 15688, - "length": 875, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTlcStrategy(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "treasuryReservesVault" - } - } - ], - "description": "Reentrancy in TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410):\n\tExternal calls:\n\t- daiToken.safeApprove(previousTrv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#394)\n\tState variables written after the call(s):\n\t- treasuryReservesVault = ITreasuryReservesVault(_trv) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#398)\n\tTempleLineOfCredit.treasuryReservesVault (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#53) can be used in cross function reentrancies:\n\t- TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#619-658)\n\t- TempleLineOfCredit._repayToken(TempleLineOfCredit.DebtTokenCache,uint128,address,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#705-721)\n\t- TempleLineOfCredit.batchLiquidate(address[]) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#318-359)\n\t- TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410)\n\t- TempleLineOfCredit.treasuryReservesVault (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#53)\n", - "markdown": "Reentrancy in [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410):\n\tExternal calls:\n\t- [daiToken.safeApprove(previousTrv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)\n\tState variables written after the call(s):\n\t- [treasuryReservesVault = ITreasuryReservesVault(_trv)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L398)\n\t[TempleLineOfCredit.treasuryReservesVault](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L53) can be used in cross function reentrancies:\n\t- [TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L619-L658)\n\t- [TempleLineOfCredit._repayToken(TempleLineOfCredit.DebtTokenCache,uint128,address,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L705-L721)\n\t- [TempleLineOfCredit.batchLiquidate(address[])](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318-L359)\n\t- [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410)\n\t- [TempleLineOfCredit.treasuryReservesVault](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L53)\n", - "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410", - "id": "45124547e30483595bf298aa091c92ce13c079404c993c2c8406499fd02de4c8", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "setTokenVault", - "source_mapping": { - "start": 7963, - "length": 749, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTokenVault(address)" - } - }, - { - "type": "node", - "name": "protocolToken.safeApprove(previousVault,0)", - "source_mapping": { - "start": 8231, - "length": 43, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [195], - "starting_column": 13, - "ending_column": 56 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTokenVault", - "source_mapping": { - "start": 7963, - "length": 749, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTokenVault(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "quoteToken.safeApprove(previousVault,0)", - "source_mapping": { - "start": 8288, - "length": 40, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [196], - "starting_column": 13, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTokenVault", - "source_mapping": { - "start": 7963, - "length": 749, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTokenVault(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "tokenVault = IRamosTokenVault(vault)", - "source_mapping": { - "start": 8349, - "length": 36, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [199], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTokenVault", - "source_mapping": { - "start": 7963, - "length": 749, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTokenVault(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "tokenVault" - } - } - ], - "description": "Reentrancy in Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209):\n\tExternal calls:\n\t- protocolToken.safeApprove(previousVault,0) (contracts/amo/Ramos.sol#195)\n\t- quoteToken.safeApprove(previousVault,0) (contracts/amo/Ramos.sol#196)\n\tState variables written after the call(s):\n\t- tokenVault = IRamosTokenVault(vault) (contracts/amo/Ramos.sol#199)\n\tRamos.tokenVault (contracts/amo/Ramos.sol#78) can be used in cross function reentrancies:\n\t- Ramos.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/amo/Ramos.sol#464-513)\n\t- Ramos.rebalanceDownExit(uint256,uint256) (contracts/amo/Ramos.sol#334-364)\n\t- Ramos.rebalanceDownJoin(uint256,uint256) (contracts/amo/Ramos.sol#421-455)\n\t- Ramos.rebalanceUpExit(uint256,uint256) (contracts/amo/Ramos.sol#290-322)\n\t- Ramos.rebalanceUpJoin(uint256,uint256) (contracts/amo/Ramos.sol#376-409)\n\t- Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256) (contracts/amo/Ramos.sol#522-559)\n\t- Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209)\n\t- Ramos.tokenVault (contracts/amo/Ramos.sol#78)\n", - "markdown": "Reentrancy in [Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209):\n\tExternal calls:\n\t- [protocolToken.safeApprove(previousVault,0)](contracts/amo/Ramos.sol#L195)\n\t- [quoteToken.safeApprove(previousVault,0)](contracts/amo/Ramos.sol#L196)\n\tState variables written after the call(s):\n\t- [tokenVault = IRamosTokenVault(vault)](contracts/amo/Ramos.sol#L199)\n\t[Ramos.tokenVault](contracts/amo/Ramos.sol#L78) can be used in cross function reentrancies:\n\t- [Ramos.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/amo/Ramos.sol#L464-L513)\n\t- [Ramos.rebalanceDownExit(uint256,uint256)](contracts/amo/Ramos.sol#L334-L364)\n\t- [Ramos.rebalanceDownJoin(uint256,uint256)](contracts/amo/Ramos.sol#L421-L455)\n\t- [Ramos.rebalanceUpExit(uint256,uint256)](contracts/amo/Ramos.sol#L290-L322)\n\t- [Ramos.rebalanceUpJoin(uint256,uint256)](contracts/amo/Ramos.sol#L376-L409)\n\t- [Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)](contracts/amo/Ramos.sol#L522-L559)\n\t- [Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209)\n\t- [Ramos.tokenVault](contracts/amo/Ramos.sol#L78)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L189-L209", - "id": "51c39733accdc5dde8af1e99214d3003e0a2be1fffb777f3eb06a7fc56a19db1", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shutdown(address)" - } - }, - { - "type": "node", - "name": "_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)", - "source_mapping": { - "start": 12499, - "length": 64, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [296], - "starting_column": 13, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 5069, + "length": 372, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "amountPerShare()" + } + }, + { + "type": "node", + "name": "p == 0", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shutdown(address)" + "start": 5345, + "length": 6, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 132 + ], + "starting_column": 13, + "ending_column": 19 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "amountPerShare", + "source_mapping": { + "start": 5069, + "length": 372, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "amountPerShare()" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "delete strategies[strategy]", - "source_mapping": { - "start": 13381, - "length": 27, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [317], - "starting_column": 9, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "Vault.amountPerShare() (contracts/core/Vault.sol#126-139) uses a dangerous strict equality:\n\t- p == 0 (contracts/core/Vault.sol#132)\n", + "markdown": "[Vault.amountPerShare()](contracts/core/Vault.sol#L126-L139) uses a dangerous strict equality:\n\t- [p == 0](contracts/core/Vault.sol#L132)\n", + "first_markdown_element": "contracts/core/Vault.sol#L126-L139", + "id": "9bf28545ec14522c94d6b47cd45800c6fbc0f2c690012899ca32b940237dd5f0", + "check": "incorrect-equality", + "impact": "Medium", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "setTlcStrategy", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shutdown(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "strategies" - } - } - ], - "description": "Reentrancy in TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319):\n\tExternal calls:\n\t- _outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy) (contracts/v2/TreasuryReservesVault.sol#296)\n\tState variables written after the call(s):\n\t- delete strategies[strategy] (contracts/v2/TreasuryReservesVault.sol#317)\n\tTreasuryReservesVault.strategies (contracts/v2/TreasuryReservesVault.sol#55) can be used in cross function reentrancies:\n\t- TreasuryReservesVault._getStrategyConfig(address) (contracts/v2/TreasuryReservesVault.sol#711-714)\n\t- TreasuryReservesVault._withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256) (contracts/v2/TreasuryReservesVault.sol#582-632)\n\t- TreasuryReservesVault.addStrategy(address,int256,ITempleStrategy.AssetBalance[]) (contracts/v2/TreasuryReservesVault.sol#173-201)\n\t- TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319)\n\t- TreasuryReservesVault.strategies (contracts/v2/TreasuryReservesVault.sol#55)\n", - "markdown": "Reentrancy in [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319):\n\tExternal calls:\n\t- [_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)](contracts/v2/TreasuryReservesVault.sol#L296)\n\tState variables written after the call(s):\n\t- [delete strategies[strategy]](contracts/v2/TreasuryReservesVault.sol#L317)\n\t[TreasuryReservesVault.strategies](contracts/v2/TreasuryReservesVault.sol#L55) can be used in cross function reentrancies:\n\t- [TreasuryReservesVault._getStrategyConfig(address)](contracts/v2/TreasuryReservesVault.sol#L711-L714)\n\t- [TreasuryReservesVault._withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)](contracts/v2/TreasuryReservesVault.sol#L582-L632)\n\t- [TreasuryReservesVault.addStrategy(address,int256,ITempleStrategy.AssetBalance[])](contracts/v2/TreasuryReservesVault.sol#L173-L201)\n\t- [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319)\n\t- [TreasuryReservesVault.strategies](contracts/v2/TreasuryReservesVault.sol#L55)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L283-L319", - "id": "29da7db88824f300cbfeae877c2e6c080f8344d5012c1ba25820228cb3feb89a", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - }, - { - "type": "node", - "name": "claimFor(account)", - "source_mapping": { - "start": 2441, - "length": 17, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [70], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3194, - "length": 56, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "claimedByScaled[account] -= amount * lifetimeAccRevenueScaledByShare", - "source_mapping": { - "start": 2535, - "length": 68, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [74], - "starting_column": 9, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "claimedByScaled" - } - }, - { - "type": "node", - "name": "shares[account] -= amount", - "source_mapping": { - "start": 2469, - "length": 25, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [72], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "shares" - } - } - ], - "description": "Reentrancy in TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#70)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tState variables written after the call(s):\n\t- claimedByScaled[account] -= amount * lifetimeAccRevenueScaledByShare (contracts/core/TreasuryFarmingRevenue.sol#74)\n\tTreasuryFarmingRevenue.claimedByScaled (contracts/core/TreasuryFarmingRevenue.sol#30) can be used in cross function reentrancies:\n\t- TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93)\n\t- TreasuryFarmingRevenue.claimedByScaled (contracts/core/TreasuryFarmingRevenue.sol#30)\n\t- TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77)\n\t- TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64)\n\t- shares[account] -= amount (contracts/core/TreasuryFarmingRevenue.sol#72)\n\tTreasuryFarmingRevenue.shares (contracts/core/TreasuryFarmingRevenue.sol#24) can be used in cross function reentrancies:\n\t- TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93)\n\t- TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77)\n\t- TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64)\n\t- TreasuryFarmingRevenue.shares (contracts/core/TreasuryFarmingRevenue.sol#24)\n", - "markdown": "Reentrancy in [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L70)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tState variables written after the call(s):\n\t- [claimedByScaled[account] -= amount * lifetimeAccRevenueScaledByShare](contracts/core/TreasuryFarmingRevenue.sol#L74)\n\t[TreasuryFarmingRevenue.claimedByScaled](contracts/core/TreasuryFarmingRevenue.sol#L30) can be used in cross function reentrancies:\n\t- [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93)\n\t- [TreasuryFarmingRevenue.claimedByScaled](contracts/core/TreasuryFarmingRevenue.sol#L30)\n\t- [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77)\n\t- [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64)\n\t- [shares[account] -= amount](contracts/core/TreasuryFarmingRevenue.sol#L72)\n\t[TreasuryFarmingRevenue.shares](contracts/core/TreasuryFarmingRevenue.sol#L24) can be used in cross function reentrancies:\n\t- [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93)\n\t- [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77)\n\t- [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64)\n\t- [TreasuryFarmingRevenue.shares](contracts/core/TreasuryFarmingRevenue.sol#L24)\n", - "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L69-L77", - "id": "cc45c8f5d22793c2ba894c4d32e4043890c1184c0a94e5502d25b97876a95c86", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - }, - { - "type": "node", - "name": "paymentContract.initialize(_token)", - "source_mapping": { - "start": 3274, - "length": 34, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [89], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "paymentContract.setAllocations(_dests,_allocations)", - "source_mapping": { - "start": 3318, - "length": 52, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [90], - "starting_column": 9, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "paymentContract.transferOwnership(msg.sender)", - "source_mapping": { - "start": 3381, - "length": 45, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [92], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)", - "source_mapping": { - "start": 3473, - "length": 165, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [95, 96, 97, 98, 99, 100], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "incrementEpoch(address(paymentContract),_totalFunding)", - "source_mapping": { - "start": 3649, - "length": 55, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [102], - "starting_column": 9, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "lastPaidEpoch" - } - }, - { - "type": "node", - "name": "data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++})", - "source_mapping": { - "start": 1542, - "length": 182, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [50, 51, 52, 53, 54], - "starting_column": 9, - "ending_column": 11 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "incrementEpoch", - "source_mapping": { - "start": 1428, - "length": 347, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "incrementEpoch(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "lastPaidEpoch" - } - } - ], - "description": "Reentrancy in TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#79-112):\n\tExternal calls:\n\t- paymentContract.initialize(_token) (contracts/admin/TempleTeamPaymentsFactory.sol#89)\n\t- paymentContract.setAllocations(_dests,_allocations) (contracts/admin/TempleTeamPaymentsFactory.sol#90)\n\t- paymentContract.transferOwnership(msg.sender) (contracts/admin/TempleTeamPaymentsFactory.sol#92)\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#95-100)\n\tState variables written after the call(s):\n\t- incrementEpoch(address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#102)\n\t\t- data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++}) (contracts/admin/TempleTeamPaymentsFactory.sol#50-54)\n\tTempleTeamPaymentsFactory.lastPaidEpoch (contracts/admin/TempleTeamPaymentsFactory.sol#23) can be used in cross function reentrancies:\n\t- TempleTeamPaymentsFactory.constructor(address,uint16) (contracts/admin/TempleTeamPaymentsFactory.sol#40-44)\n\t- TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#79-112)\n\t- TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[]) (contracts/admin/TempleTeamPaymentsFactory.sol#119-143)\n\t- TempleTeamPaymentsFactory.incrementEpoch(address,uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#46-56)\n\t- TempleTeamPaymentsFactory.lastPaidEpoch (contracts/admin/TempleTeamPaymentsFactory.sol#23)\n", - "markdown": "Reentrancy in [TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112):\n\tExternal calls:\n\t- [paymentContract.initialize(_token)](contracts/admin/TempleTeamPaymentsFactory.sol#L89)\n\t- [paymentContract.setAllocations(_dests,_allocations)](contracts/admin/TempleTeamPaymentsFactory.sol#L90)\n\t- [paymentContract.transferOwnership(msg.sender)](contracts/admin/TempleTeamPaymentsFactory.sol#L92)\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L95-L100)\n\tState variables written after the call(s):\n\t- [incrementEpoch(address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L102)\n\t\t- [data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++})](contracts/admin/TempleTeamPaymentsFactory.sol#L50-L54)\n\t[TempleTeamPaymentsFactory.lastPaidEpoch](contracts/admin/TempleTeamPaymentsFactory.sol#L23) can be used in cross function reentrancies:\n\t- [TempleTeamPaymentsFactory.constructor(address,uint16)](contracts/admin/TempleTeamPaymentsFactory.sol#L40-L44)\n\t- [TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112)\n\t- [TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[])](contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143)\n\t- [TempleTeamPaymentsFactory.incrementEpoch(address,uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L46-L56)\n\t- [TempleTeamPaymentsFactory.lastPaidEpoch](contracts/admin/TempleTeamPaymentsFactory.sol#L23)\n", - "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112", - "id": "1239a22bea2c9a42dbde3ae4ac80f8aa9a378a084fd732a81c3169ae01c87319", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - }, - { - "type": "node", - "name": "claimFor(account)", - "source_mapping": { - "start": 2073, - "length": 17, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [57], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3194, - "length": 56, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "claimedByScaled[account] += amount * lifetimeAccRevenueScaledByShare", - "source_mapping": { - "start": 2167, - "length": 68, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [61], - "starting_column": 9, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "claimedByScaled" - } - }, - { - "type": "node", - "name": "shares[account] += amount", - "source_mapping": { - "start": 2101, - "length": 25, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [59], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "shares" - } - } - ], - "description": "Reentrancy in TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#57)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tState variables written after the call(s):\n\t- claimedByScaled[account] += amount * lifetimeAccRevenueScaledByShare (contracts/core/TreasuryFarmingRevenue.sol#61)\n\tTreasuryFarmingRevenue.claimedByScaled (contracts/core/TreasuryFarmingRevenue.sol#30) can be used in cross function reentrancies:\n\t- TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93)\n\t- TreasuryFarmingRevenue.claimedByScaled (contracts/core/TreasuryFarmingRevenue.sol#30)\n\t- TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77)\n\t- TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64)\n\t- shares[account] += amount (contracts/core/TreasuryFarmingRevenue.sol#59)\n\tTreasuryFarmingRevenue.shares (contracts/core/TreasuryFarmingRevenue.sol#24) can be used in cross function reentrancies:\n\t- TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93)\n\t- TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77)\n\t- TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64)\n\t- TreasuryFarmingRevenue.shares (contracts/core/TreasuryFarmingRevenue.sol#24)\n", - "markdown": "Reentrancy in [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L57)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tState variables written after the call(s):\n\t- [claimedByScaled[account] += amount * lifetimeAccRevenueScaledByShare](contracts/core/TreasuryFarmingRevenue.sol#L61)\n\t[TreasuryFarmingRevenue.claimedByScaled](contracts/core/TreasuryFarmingRevenue.sol#L30) can be used in cross function reentrancies:\n\t- [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93)\n\t- [TreasuryFarmingRevenue.claimedByScaled](contracts/core/TreasuryFarmingRevenue.sol#L30)\n\t- [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77)\n\t- [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64)\n\t- [shares[account] += amount](contracts/core/TreasuryFarmingRevenue.sol#L59)\n\t[TreasuryFarmingRevenue.shares](contracts/core/TreasuryFarmingRevenue.sol#L24) can be used in cross function reentrancies:\n\t- [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93)\n\t- [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77)\n\t- [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64)\n\t- [TreasuryFarmingRevenue.shares](contracts/core/TreasuryFarmingRevenue.sol#L24)\n", - "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L56-L64", - "id": "7136d46cea8f0cb4f10b428d075c61a8ad801ba9ca1ef8c90733aaa52034f6ed", - "check": "reentrancy-no-eth", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "i", - "source_mapping": { - "start": 8364, - "length": 9, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [213], - "starting_column": 9, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateStrategyEnabledBorrowTokens", - "source_mapping": { - "start": 8067, - "length": 898, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + }, + { + "type": "node", + "name": "daiToken.approve(previousTrv,0)", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "updateStrategyEnabledBorrowTokens(address,IERC20[],IERC20[])" - } - } - } - } - ], - "description": "TreasuryReservesVault.updateStrategyEnabledBorrowTokens(address,IERC20[],IERC20[]).i (contracts/v2/TreasuryReservesVault.sol#213) is a local variable never initialized\n", - "markdown": "[TreasuryReservesVault.updateStrategyEnabledBorrowTokens(address,IERC20[],IERC20[]).i](contracts/v2/TreasuryReservesVault.sol#L213) is a local variable never initialized\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L213", - "id": "ccb61a70ed00f67ef5318dfebba8dd5906b02a2b7022418f095ca6131f2e87a0", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "shutdownParams", - "source_mapping": { - "start": 9302, - "length": 36, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [238], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "populateShutdownData", - "source_mapping": { - "start": 9022, - "length": 564, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "populateShutdownData(bytes)" - } - } - } - } - ], - "description": "RamosStrategy.populateShutdownData(bytes).shutdownParams (contracts/v2/strategies/RamosStrategy.sol#238) is a local variable never initialized\n", - "markdown": "[RamosStrategy.populateShutdownData(bytes).shutdownParams](contracts/v2/strategies/RamosStrategy.sol#L238) is a local variable never initialized\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L238", - "id": "e3b0c7352e8da48d32a58f5b6962b6132c525566519d363234f70e52d4760882", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "baseStrategyAvailable", - "source_mapping": { - "start": 21089, - "length": 29, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [476], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "totalAvailable", - "source_mapping": { - "start": 20920, - "length": 877, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 486, 487, 488, 489 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 16002, + "length": 32, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 394 + ], + "starting_column": 13, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "treasuryReservesVault = ITreasuryReservesVault(_trv)", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "totalAvailable(IERC20)" - } - } - } - } - ], - "description": "TreasuryReservesVault.totalAvailable(IERC20).baseStrategyAvailable (contracts/v2/TreasuryReservesVault.sol#476) is a local variable never initialized\n", - "markdown": "[TreasuryReservesVault.totalAvailable(IERC20).baseStrategyAvailable](contracts/v2/TreasuryReservesVault.sol#L476) is a local variable never initialized\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L476", - "id": "5a877bceafff56259a481e94173f69b6c70a20fc470647802278ccdef5ab0fcd", - "check": "uninitialized-local", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "depositAndStake", - "source_mapping": { - "start": 2874, - "length": 351, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [79, 80, 81, 82, 83, 84, 85], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "depositAndStake(uint256)" - } - }, - { - "type": "node", - "name": "booster.deposit(auraPoolInfo.pId,amount,true)", - "source_mapping": { - "start": 3161, - "length": 47, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [83], - "starting_column": 13, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "depositAndStake", - "source_mapping": { - "start": 2874, - "length": 351, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [79, 80, 81, 82, 83, 84, 85], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "depositAndStake(uint256)" - } - } - } - } - ], - "description": "AuraStaking.depositAndStake(uint256) (contracts/amo/AuraStaking.sol#79-85) ignores return value by booster.deposit(auraPoolInfo.pId,amount,true) (contracts/amo/AuraStaking.sol#83)\n", - "markdown": "[AuraStaking.depositAndStake(uint256)](contracts/amo/AuraStaking.sol#L79-L85) ignores return value by [booster.deposit(auraPoolInfo.pId,amount,true)](contracts/amo/AuraStaking.sol#L83)\n", - "first_markdown_element": "contracts/amo/AuraStaking.sol#L79-L85", - "id": "df1bba2db758866958a0bd3d600869193c2a4c54635aeec3c0158683eb3c6bd1", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawAndUnwrap", - "source_mapping": { - "start": 3286, - "length": 634, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndUnwrap(uint256,bool,address)" - } - }, - { - "type": "node", - "name": "IAuraBaseRewardPool(auraPoolInfo.rewards).withdrawAndUnwrap(toUnstake,claim)", - "source_mapping": { - "start": 3680, - "length": 77, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [93], - "starting_column": 13, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawAndUnwrap", - "source_mapping": { - "start": 3286, - "length": 634, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndUnwrap(uint256,bool,address)" - } - } - } - } - ], - "description": "AuraStaking.withdrawAndUnwrap(uint256,bool,address) (contracts/amo/AuraStaking.sol#88-100) ignores return value by IAuraBaseRewardPool(auraPoolInfo.rewards).withdrawAndUnwrap(toUnstake,claim) (contracts/amo/AuraStaking.sol#93)\n", - "markdown": "[AuraStaking.withdrawAndUnwrap(uint256,bool,address)](contracts/amo/AuraStaking.sol#L88-L100) ignores return value by [IAuraBaseRewardPool(auraPoolInfo.rewards).withdrawAndUnwrap(toUnstake,claim)](contracts/amo/AuraStaking.sol#L93)\n", - "first_markdown_element": "contracts/amo/AuraStaking.sol#L88-L100", - "id": "a3f11c21d94cc0286397b0f4acf966b2e7b4421bbb8026550ce5beae49adbf78", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getReward", - "source_mapping": { - "start": 4291, - "length": 657, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "getReward(bool)" - } - }, - { - "type": "node", - "name": "IAuraBaseRewardPool(auraPoolInfo.rewards).getReward(address(this),claimExtras)", - "source_mapping": { - "start": 4356, - "length": 79, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [111], - "starting_column": 9, - "ending_column": 88 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getReward", - "source_mapping": { - "start": 4291, - "length": 657, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "getReward(bool)" - } - } - } - } - ], - "description": "AuraStaking.getReward(bool) (contracts/amo/AuraStaking.sol#110-125) ignores return value by IAuraBaseRewardPool(auraPoolInfo.rewards).getReward(address(this),claimExtras) (contracts/amo/AuraStaking.sol#111)\n", - "markdown": "[AuraStaking.getReward(bool)](contracts/amo/AuraStaking.sol#L110-L125) ignores return value by [IAuraBaseRewardPool(auraPoolInfo.rewards).getReward(address(this),claimExtras)](contracts/amo/AuraStaking.sol#L111)\n", - "first_markdown_element": "contracts/amo/AuraStaking.sol#L110-L125", - "id": "334cc08346f4acb06b750e6d7ca0bbba6ed0f1443127882a8bce2dba76eedff5", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getBalances", - "source_mapping": { - "start": 2079, - "length": 154, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [55, 56, 57], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerPoolHelper", - "source_mapping": { - "start": 739, - "length": 19014, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "getBalances()" - } - }, - { - "type": "node", - "name": "(None,balances,None) = balancerVault.getPoolTokens(balancerPoolId)", - "source_mapping": { - "start": 2167, - "length": 59, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [56], - "starting_column": 7, - "ending_column": 66 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getBalances", - "source_mapping": { - "start": 2079, - "length": 154, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [55, 56, 57], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerPoolHelper", - "source_mapping": { - "start": 739, - "length": 19014, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "getBalances()" - } - } - } - } - ], - "description": "BalancerPoolHelper.getBalances() (contracts/amo/helpers/BalancerPoolHelper.sol#55-57) ignores return value by (None,balances,None) = balancerVault.getPoolTokens(balancerPoolId) (contracts/amo/helpers/BalancerPoolHelper.sol#56)\n", - "markdown": "[BalancerPoolHelper.getBalances()](contracts/amo/helpers/BalancerPoolHelper.sol#L55-L57) ignores return value by [(None,balances,None) = balancerVault.getPoolTokens(balancerPoolId)](contracts/amo/helpers/BalancerPoolHelper.sol#L56)\n", - "first_markdown_element": "contracts/amo/helpers/BalancerPoolHelper.sol#L55-L57", - "id": "97630a6a935fd6fa31a1e214fdb8582cf37cbb5ba228037742cc7ccc77486019", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "proportionalAddLiquidityQuote", - "source_mapping": { - "start": 15567, - "length": 1930, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerPoolHelper", - "source_mapping": { - "start": 739, - "length": 19014, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "proportionalAddLiquidityQuote(uint256,uint256)" - } - }, - { - "type": "node", - "name": "(expectedBptAmount,None) = balancerHelpers.queryJoin(balancerPoolId,amo,amo,requestData)", - "source_mapping": { - "start": 17103, - "length": 88, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [374], - "starting_column": 9, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "proportionalAddLiquidityQuote", - "source_mapping": { - "start": 15567, - "length": 1930, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerPoolHelper", - "source_mapping": { - "start": 739, - "length": 19014, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "proportionalAddLiquidityQuote(uint256,uint256)" - } - } - } - } - ], - "description": "BalancerPoolHelper.proportionalAddLiquidityQuote(uint256,uint256) (contracts/amo/helpers/BalancerPoolHelper.sol#348-380) ignores return value by (expectedBptAmount,None) = balancerHelpers.queryJoin(balancerPoolId,amo,amo,requestData) (contracts/amo/helpers/BalancerPoolHelper.sol#374)\n", - "markdown": "[BalancerPoolHelper.proportionalAddLiquidityQuote(uint256,uint256)](contracts/amo/helpers/BalancerPoolHelper.sol#L348-L380) ignores return value by [(expectedBptAmount,None) = balancerHelpers.queryJoin(balancerPoolId,amo,amo,requestData)](contracts/amo/helpers/BalancerPoolHelper.sol#L374)\n", - "first_markdown_element": "contracts/amo/helpers/BalancerPoolHelper.sol#L348-L380", - "id": "44982b3b03e18740f01aed72e03f5657be31a18422cec5c4f5a8d53b084f8256", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "proportionalRemoveLiquidityQuote", - "source_mapping": { - "start": 17648, - "length": 1775, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerPoolHelper", - "source_mapping": { - "start": 739, - "length": 19014, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429 - ], - "starting_column": 1, - "ending_column": 0 + "start": 16124, + "length": 52, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 398 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "treasuryReservesVault" + } } - }, - "signature": "proportionalRemoveLiquidityQuote(uint256,uint256)" - } - }, - { - "type": "node", - "name": "(None,requestData.minAmountsOut) = balancerHelpers.queryExit(balancerPoolId,amo,amo,requestData)", - "source_mapping": { - "start": 18569, - "length": 96, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [405], - "starting_column": 9, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "proportionalRemoveLiquidityQuote", - "source_mapping": { - "start": 17648, - "length": 1775, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerPoolHelper", - "source_mapping": { - "start": 739, - "length": 19014, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "proportionalRemoveLiquidityQuote(uint256,uint256)" + ], + "description": "Reentrancy in TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410):\n\tExternal calls:\n\t- daiToken.approve(previousTrv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#394)\n\tState variables written after the call(s):\n\t- treasuryReservesVault = ITreasuryReservesVault(_trv) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#398)\n\tTempleLineOfCredit.treasuryReservesVault (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#53) can be used in cross function reentrancies:\n\t- TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#619-658)\n\t- TempleLineOfCredit._repayToken(TempleLineOfCredit.DebtTokenCache,uint128,address,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#705-721)\n\t- TempleLineOfCredit.batchLiquidate(address[]) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#318-359)\n\t- TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410)\n\t- TempleLineOfCredit.treasuryReservesVault (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#53)\n", + "markdown": "Reentrancy in [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410):\n\tExternal calls:\n\t- [daiToken.approve(previousTrv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)\n\tState variables written after the call(s):\n\t- [treasuryReservesVault = ITreasuryReservesVault(_trv)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L398)\n\t[TempleLineOfCredit.treasuryReservesVault](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L53) can be used in cross function reentrancies:\n\t- [TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L619-L658)\n\t- [TempleLineOfCredit._repayToken(TempleLineOfCredit.DebtTokenCache,uint128,address,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L705-L721)\n\t- [TempleLineOfCredit.batchLiquidate(address[])](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318-L359)\n\t- [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410)\n\t- [TempleLineOfCredit.treasuryReservesVault](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L53)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410", + "id": "2135b52f35db6cda9505a21d3dca08e0bc753e863d4701970ef206e54e163bb1", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + }, + { + "type": "node", + "name": "protocolToken.approve(previousVault,0)", + "source_mapping": { + "start": 8228, + "length": 39, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 195 + ], + "starting_column": 13, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.approve(previousVault,0)", + "source_mapping": { + "start": 8281, + "length": 36, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 196 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "tokenVault = IRamosTokenVault(vault)", + "source_mapping": { + "start": 8338, + "length": 36, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 199 + ], + "starting_column": 9, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "tokenVault" + } } - } - } - } - ], - "description": "BalancerPoolHelper.proportionalRemoveLiquidityQuote(uint256,uint256) (contracts/amo/helpers/BalancerPoolHelper.sol#384-416) ignores return value by (None,requestData.minAmountsOut) = balancerHelpers.queryExit(balancerPoolId,amo,amo,requestData) (contracts/amo/helpers/BalancerPoolHelper.sol#405)\n", - "markdown": "[BalancerPoolHelper.proportionalRemoveLiquidityQuote(uint256,uint256)](contracts/amo/helpers/BalancerPoolHelper.sol#L384-L416) ignores return value by [(None,requestData.minAmountsOut) = balancerHelpers.queryExit(balancerPoolId,amo,amo,requestData)](contracts/amo/helpers/BalancerPoolHelper.sol#L405)\n", - "first_markdown_element": "contracts/amo/helpers/BalancerPoolHelper.sol#L384-L416", - "id": "08b9be6d43268a91c87113facf1f93ba28159d15047c9ef6e2a5e42a2a791c97", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "removeOtcMarket", - "source_mapping": { - "start": 4310, - "length": 464, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [81, 82, 83, 84, 85, 86, 87, 88, 89], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MultiOtcOffer", - "source_mapping": { - "start": 1163, - "length": 13535, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209):\n\tExternal calls:\n\t- protocolToken.approve(previousVault,0) (contracts/amo/Ramos.sol#195)\n\t- quoteToken.approve(previousVault,0) (contracts/amo/Ramos.sol#196)\n\tState variables written after the call(s):\n\t- tokenVault = IRamosTokenVault(vault) (contracts/amo/Ramos.sol#199)\n\tRamos.tokenVault (contracts/amo/Ramos.sol#78) can be used in cross function reentrancies:\n\t- Ramos.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/amo/Ramos.sol#464-513)\n\t- Ramos.rebalanceDownExit(uint256,uint256) (contracts/amo/Ramos.sol#334-364)\n\t- Ramos.rebalanceDownJoin(uint256,uint256) (contracts/amo/Ramos.sol#421-455)\n\t- Ramos.rebalanceUpExit(uint256,uint256) (contracts/amo/Ramos.sol#290-322)\n\t- Ramos.rebalanceUpJoin(uint256,uint256) (contracts/amo/Ramos.sol#376-409)\n\t- Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256) (contracts/amo/Ramos.sol#522-559)\n\t- Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209)\n\t- Ramos.tokenVault (contracts/amo/Ramos.sol#78)\n", + "markdown": "Reentrancy in [Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209):\n\tExternal calls:\n\t- [protocolToken.approve(previousVault,0)](contracts/amo/Ramos.sol#L195)\n\t- [quoteToken.approve(previousVault,0)](contracts/amo/Ramos.sol#L196)\n\tState variables written after the call(s):\n\t- [tokenVault = IRamosTokenVault(vault)](contracts/amo/Ramos.sol#L199)\n\t[Ramos.tokenVault](contracts/amo/Ramos.sol#L78) can be used in cross function reentrancies:\n\t- [Ramos.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/amo/Ramos.sol#L464-L513)\n\t- [Ramos.rebalanceDownExit(uint256,uint256)](contracts/amo/Ramos.sol#L334-L364)\n\t- [Ramos.rebalanceDownJoin(uint256,uint256)](contracts/amo/Ramos.sol#L421-L455)\n\t- [Ramos.rebalanceUpExit(uint256,uint256)](contracts/amo/Ramos.sol#L290-L322)\n\t- [Ramos.rebalanceUpJoin(uint256,uint256)](contracts/amo/Ramos.sol#L376-L409)\n\t- [Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)](contracts/amo/Ramos.sol#L522-L559)\n\t- [Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209)\n\t- [Ramos.tokenVault](contracts/amo/Ramos.sol#L78)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L189-L209", + "id": "48eaffc570a3dddf542c7c007ea26914107df0d0e389c27773f3315513b8c896", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + }, + { + "type": "node", + "name": "protocolToken.approve(previousVault,0)", + "source_mapping": { + "start": 8228, + "length": 39, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 195 + ], + "starting_column": 13, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + } } - }, - "signature": "removeOtcMarket(address,address)" - } - }, - { - "type": "node", - "name": "_otcMarketIds.remove(_marketId)", - "source_mapping": { - "start": 4579, - "length": 31, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [84], - "starting_column": 9, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeOtcMarket", - "source_mapping": { - "start": 4310, - "length": 464, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [81, 82, 83, 84, 85, 86, 87, 88, 89], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "MultiOtcOffer", - "source_mapping": { - "start": 1163, - "length": 13535, - "filename_relative": "contracts/core/MultiOtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", - "filename_short": "contracts/core/MultiOtcOffer.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeOtcMarket(address,address)" + ], + "description": "Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209) ignores return value by protocolToken.approve(previousVault,0) (contracts/amo/Ramos.sol#195)\n", + "markdown": "[Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209) ignores return value by [protocolToken.approve(previousVault,0)](contracts/amo/Ramos.sol#L195)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L189-L209", + "id": "f3361a65ee76c42e014ac2084189cb808a536ace3a08c0927237056d9aee806c", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + }, + { + "type": "node", + "name": "quoteToken.approve(previousVault,0)", + "source_mapping": { + "start": 8281, + "length": 36, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 196 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + } } - } - } - } - ], - "description": "MultiOtcOffer.removeOtcMarket(address,address) (contracts/core/MultiOtcOffer.sol#81-89) ignores return value by _otcMarketIds.remove(_marketId) (contracts/core/MultiOtcOffer.sol#84)\n", - "markdown": "[MultiOtcOffer.removeOtcMarket(address,address)](contracts/core/MultiOtcOffer.sol#L81-L89) ignores return value by [_otcMarketIds.remove(_marketId)](contracts/core/MultiOtcOffer.sol#L84)\n", - "first_markdown_element": "contracts/core/MultiOtcOffer.sol#L81-L89", - "id": "79c4d4701a934e7e79200185323bb45688ce5b0c8b33dda709234bad490f1472", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "setBorrowToken", - "source_mapping": { - "start": 4145, - "length": 1025, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209) ignores return value by quoteToken.approve(previousVault,0) (contracts/amo/Ramos.sol#196)\n", + "markdown": "[Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209) ignores return value by [quoteToken.approve(previousVault,0)](contracts/amo/Ramos.sol#L196)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L189-L209", + "id": "aface72eecf0b7ba93b6bf44cc1f3e5761d97abf8c0de3daa4bfebcc0d8b3ccf", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + }, + { + "type": "node", + "name": "protocolToken.approve(vault,0)", + "source_mapping": { + "start": 8443, + "length": 31, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 203 + ], + "starting_column": 13, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + } } - }, - "signature": "setBorrowToken(IERC20,address,uint256,uint256,address)" - } - }, - { - "type": "node", - "name": "_borrowTokenSet.add(address(token))", - "source_mapping": { - "start": 5128, - "length": 35, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [126], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setBorrowToken", - "source_mapping": { - "start": 4145, - "length": 1025, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209) ignores return value by protocolToken.approve(vault,0) (contracts/amo/Ramos.sol#203)\n", + "markdown": "[Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209) ignores return value by [protocolToken.approve(vault,0)](contracts/amo/Ramos.sol#L203)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L189-L209", + "id": "3f23ebd3595ef20def4e503698854b7ef84727f803bb624df6da7ba38db32ca8", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + }, + { + "type": "node", + "name": "quoteToken.approve(vault,0)", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setBorrowToken(IERC20,address,uint256,uint256,address)" + "start": 8576, + "length": 28, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 206 + ], + "starting_column": 13, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7960, + "length": 733, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + } } - } - } - } - ], - "description": "TreasuryReservesVault.setBorrowToken(IERC20,address,uint256,uint256,address) (contracts/v2/TreasuryReservesVault.sol#108-127) ignores return value by _borrowTokenSet.add(address(token)) (contracts/v2/TreasuryReservesVault.sol#126)\n", - "markdown": "[TreasuryReservesVault.setBorrowToken(IERC20,address,uint256,uint256,address)](contracts/v2/TreasuryReservesVault.sol#L108-L127) ignores return value by [_borrowTokenSet.add(address(token))](contracts/v2/TreasuryReservesVault.sol#L126)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L108-L127", - "id": "5cf78f34e420dc046a400c32810667b772002358e964fa3e56b9b0a68b28a33f", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "removeBorrowToken", - "source_mapping": { - "start": 5247, - "length": 319, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [132, 133, 134, 135, 136, 137, 138, 139], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209) ignores return value by quoteToken.approve(vault,0) (contracts/amo/Ramos.sol#206)\n", + "markdown": "[Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209) ignores return value by [quoteToken.approve(vault,0)](contracts/amo/Ramos.sol#L206)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L189-L209", + "id": "bbd252b59f9154e81eaec7cd9986b9d3503a6eeea8f0871d4cd8297deb1648a5", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + }, + { + "type": "node", + "name": "quoteToken.approve(address(balancerVault),0)", + "source_mapping": { + "start": 21235, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 491 + ], + "starting_column": 17, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + } } - }, - "signature": "removeBorrowToken(IERC20)" - } - }, - { - "type": "node", - "name": "_borrowTokenSet.remove(address(token))", - "source_mapping": { - "start": 5521, - "length": 38, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [138], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeBorrowToken", - "source_mapping": { - "start": 5247, - "length": 319, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [132, 133, 134, 135, 136, 137, 138, 139], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "Ramos.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/amo/Ramos.sol#464-513) ignores return value by quoteToken.approve(address(balancerVault),0) (contracts/amo/Ramos.sol#491)\n", + "markdown": "[Ramos.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/amo/Ramos.sol#L464-L513) ignores return value by [quoteToken.approve(address(balancerVault),0)](contracts/amo/Ramos.sol#L491)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L464-L513", + "id": "8cfe4055a8ead5cc98c03c6e8f3466a558b794c381be26bbd8ba62d5773dfc96", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_setTokenAllowance", + "source_mapping": { + "start": 7543, + "length": 292, + "filename_relative": "contracts/v2/strategies/AbstractStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/AbstractStrategy.sol", + "filename_short": "contracts/v2/strategies/AbstractStrategy.sol", + "is_dependency": false, + "lines": [ + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AbstractStrategy", + "source_mapping": { + "start": 766, + "length": 8261, + "filename_relative": "contracts/v2/strategies/AbstractStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/AbstractStrategy.sol", + "filename_short": "contracts/v2/strategies/AbstractStrategy.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_setTokenAllowance(IERC20,address,uint256)" + } + }, + { + "type": "node", + "name": "token.approve(spender,0)", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeBorrowToken(IERC20)" + "start": 7709, + "length": 25, + "filename_relative": "contracts/v2/strategies/AbstractStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/AbstractStrategy.sol", + "filename_short": "contracts/v2/strategies/AbstractStrategy.sol", + "is_dependency": false, + "lines": [ + 201 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_setTokenAllowance", + "source_mapping": { + "start": 7543, + "length": 292, + "filename_relative": "contracts/v2/strategies/AbstractStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/AbstractStrategy.sol", + "filename_short": "contracts/v2/strategies/AbstractStrategy.sol", + "is_dependency": false, + "lines": [ + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AbstractStrategy", + "source_mapping": { + "start": 766, + "length": 8261, + "filename_relative": "contracts/v2/strategies/AbstractStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/AbstractStrategy.sol", + "filename_short": "contracts/v2/strategies/AbstractStrategy.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_setTokenAllowance(IERC20,address,uint256)" + } + } + } } - } - } - } - ], - "description": "TreasuryReservesVault.removeBorrowToken(IERC20) (contracts/v2/TreasuryReservesVault.sol#132-139) ignores return value by _borrowTokenSet.remove(address(token)) (contracts/v2/TreasuryReservesVault.sol#138)\n", - "markdown": "[TreasuryReservesVault.removeBorrowToken(IERC20)](contracts/v2/TreasuryReservesVault.sol#L132-L139) ignores return value by [_borrowTokenSet.remove(address(token))](contracts/v2/TreasuryReservesVault.sol#L138)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L132-L139", - "id": "5474dfbc0dfd2144f1d3592aebc4e72de5fca48cbeb8ec28a4e82aa1c1ea096c", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "AbstractStrategy._setTokenAllowance(IERC20,address,uint256) (contracts/v2/strategies/AbstractStrategy.sol#198-205) ignores return value by token.approve(spender,0) (contracts/v2/strategies/AbstractStrategy.sol#201)\n", + "markdown": "[AbstractStrategy._setTokenAllowance(IERC20,address,uint256)](contracts/v2/strategies/AbstractStrategy.sol#L198-L205) ignores return value by [token.approve(spender,0)](contracts/v2/strategies/AbstractStrategy.sol#L201)\n", + "first_markdown_element": "contracts/v2/strategies/AbstractStrategy.sol#L198-L205", + "id": "fe54e23af391cab77538cf964ce5bafd58b1d5d90408ffbb29567e57cce7034b", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1703, + "length": 783, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,string,address,address,address,address)" + } + }, + { + "type": "node", + "name": "daiToken.approve(address(daiJoin),0)", + "source_mapping": { + "start": 2300, + "length": 37, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 60 + ], + "starting_column": 9, + "ending_column": 46 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1703, + "length": 783, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,string,address,address,address,address)" + } + } + } } - }, - "signature": "shutdown(address)" - } - }, - { - "type": "node", - "name": "_strategySet.remove(strategy)", - "source_mapping": { - "start": 13418, - "length": 29, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [318], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "DsrBaseStrategy.constructor(address,address,string,address,address,address,address) (contracts/v2/strategies/DsrBaseStrategy.sol#45-63) ignores return value by daiToken.approve(address(daiJoin),0) (contracts/v2/strategies/DsrBaseStrategy.sol#60)\n", + "markdown": "[DsrBaseStrategy.constructor(address,address,string,address,address,address,address)](contracts/v2/strategies/DsrBaseStrategy.sol#L45-L63) ignores return value by [daiToken.approve(address(daiJoin),0)](contracts/v2/strategies/DsrBaseStrategy.sol#L60)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L45-L63", + "id": "4967b397ecef207c96da05eb70c114a13c1c7d857b8e9ff4ecf5fad941835b1e", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + }, + { + "type": "node", + "name": "daiToken.approve(previousTrv,0)", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shutdown(address)" + "start": 16002, + "length": 32, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 394 + ], + "starting_column": 13, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + } } - } - } - } - ], - "description": "TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319) ignores return value by _strategySet.remove(strategy) (contracts/v2/TreasuryReservesVault.sol#318)\n", - "markdown": "[TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319) ignores return value by [_strategySet.remove(strategy)](contracts/v2/TreasuryReservesVault.sol#L318)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L283-L319", - "id": "14b0ae4775bb656e93254a9232479092aea49d94c14762546af7a2b568164211", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "setIdentifierForCaller", - "source_mapping": { - "start": 1967, - "length": 555, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "is_dependency": false, - "lines": [47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerProxy", - "source_mapping": { - "start": 808, - "length": 3156, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410) ignores return value by daiToken.approve(previousTrv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#394)\n", + "markdown": "[TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410) ignores return value by [daiToken.approve(previousTrv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410", + "id": "5fa79b657e0f64d022302a3a9b887d1ab1e0a67d8ba497e49c5d707e4f4d8bb3", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + }, + { + "type": "node", + "name": "daiToken.approve(_trv,0)", + "source_mapping": { + "start": 16245, + "length": 25, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 402 + ], + "starting_column": 13, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + } } - }, - "signature": "setIdentifierForCaller(address,string)" - } - }, - { - "type": "node", - "name": "_identifiers.add(_identifier)", - "source_mapping": { - "start": 2409, - "length": 29, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "is_dependency": false, - "lines": [56], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setIdentifierForCaller", - "source_mapping": { - "start": 1967, - "length": 555, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "is_dependency": false, - "lines": [47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerProxy", - "source_mapping": { - "start": 808, - "length": 3156, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setIdentifierForCaller(address,string)" + ], + "description": "TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410) ignores return value by daiToken.approve(_trv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#402)\n", + "markdown": "[TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410) ignores return value by [daiToken.approve(_trv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L402)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410", + "id": "2a2e696dfe161cf52cb068ca3bf244c48da6cb0a5cabf7dccb1d048831709aac", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_vaultedTempleAccount", + "source_mapping": { + "start": 2865, + "length": 29, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 70 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2716, + "length": 838, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)" + } + } + } + }, + { + "type": "node", + "name": "vaultedTempleAccount = _vaultedTempleAccount", + "source_mapping": { + "start": 3255, + "length": 44, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 9, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2716, + "length": 838, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)" + } + } + } } - } - } - } - ], - "description": "TempleCircuitBreakerProxy.setIdentifierForCaller(address,string) (contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#47-59) ignores return value by _identifiers.add(_identifier) (contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#56)\n", - "markdown": "[TempleCircuitBreakerProxy.setIdentifierForCaller(address,string)](contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L47-L59) ignores return value by [_identifiers.add(_identifier)](contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L56)\n", - "first_markdown_element": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L47-L59", - "id": "e72127f3ec266630bd01282f5d373e9eadb2fa635a529f17decfa267707680e0", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "latestAssetBalances", - "source_mapping": { - "start": 5827, - "length": 565, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Vault.constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)._vaultedTempleAccount (contracts/core/Vault.sol#70) lacks a zero-check on :\n\t\t- vaultedTempleAccount = _vaultedTempleAccount (contracts/core/Vault.sol#79)\n", + "markdown": "[Vault.constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)._vaultedTempleAccount](contracts/core/Vault.sol#L70) lacks a zero-check on :\n\t\t- [vaultedTempleAccount = _vaultedTempleAccount](contracts/core/Vault.sol#L79)\n", + "first_markdown_element": "contracts/core/Vault.sol#L70", + "id": "85cdd0b66fd3466c49d27b5e7e75cf5cb971c2777b5d51cf4bf2a8fcf096b82c", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "redeemExposures", + "source_mapping": { + "start": 4812, + "length": 251, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "redeemExposures(Exposure[])" + } + }, + { + "type": "node", + "name": "exposures[i].redeem()", + "source_mapping": { + "start": 4956, + "length": 21, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 120 + ], + "starting_column": 13, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "redeemExposures", + "source_mapping": { + "start": 4812, + "length": 251, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "redeemExposures(Exposure[])" + } + } + } } - }, - "signature": "latestAssetBalances()" - } - }, - { - "type": "node", - "name": "(templeTokenBalance,quoteTokenBalance) = ramos.positions()", - "source_mapping": { - "start": 5992, - "length": 77, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [148], - "starting_column": 9, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "latestAssetBalances", - "source_mapping": { - "start": 5827, - "length": 565, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "latestAssetBalances()" + ], + "description": "Vault.redeemExposures(Exposure[]) (contracts/core/Vault.sol#118-124) has external calls inside a loop: exposures[i].redeem() (contracts/core/Vault.sol#120)\n", + "markdown": "[Vault.redeemExposures(Exposure[])](contracts/core/Vault.sol#L118-L124) has external calls inside a loop: [exposures[i].redeem()](contracts/core/Vault.sol#L120)\n", + "first_markdown_element": "contracts/core/Vault.sol#L118-L124", + "id": "3d603bcb54a041008ffbbe59a19e8bd58f4f81a44da80677cf0c3c382caed94a", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 12337, + "length": 502, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + }, + { + "type": "node", + "name": "(daiAvailable,sharesAvailable) = _checkpointDaiBalance()", + "source_mapping": { + "start": 12444, + "length": 74, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 296 + ], + "starting_column": 9, + "ending_column": 83 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 12337, + "length": 502, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5623, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", + "source_mapping": { + "start": 12528, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 297 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 12337, + "length": 502, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11654, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11686, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11734, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 282 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", + "source_mapping": { + "start": 12528, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 297 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 12337, + "length": 502, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "RamosStrategy.latestAssetBalances() (contracts/v2/strategies/RamosStrategy.sol#144-159) ignores return value by (templeTokenBalance,quoteTokenBalance) = ramos.positions() (contracts/v2/strategies/RamosStrategy.sol#148)\n", - "markdown": "[RamosStrategy.latestAssetBalances()](contracts/v2/strategies/RamosStrategy.sol#L144-L159) ignores return value by [(templeTokenBalance,quoteTokenBalance) = ramos.positions()](contracts/v2/strategies/RamosStrategy.sol#L148)\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L144-L159", - "id": "420dcd2cbb24da1b9ab2dafe842594bf844fae670bc85fc21d1d3835c68dd336", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "proportionalAddLiquidityQuote", - "source_mapping": { - "start": 6569, - "length": 393, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in DsrBaseStrategy._doShutdown(bytes) (contracts/v2/strategies/DsrBaseStrategy.sol#294-304):\n\tExternal calls:\n\t- (daiAvailable,sharesAvailable) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#296)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#143)\n\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#297)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#282)\n\t\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#297)\n", + "markdown": "Reentrancy in [DsrBaseStrategy._doShutdown(bytes)](contracts/v2/strategies/DsrBaseStrategy.sol#L294-L304):\n\tExternal calls:\n\t- [(daiAvailable,sharesAvailable) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L296)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L143)\n\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L297)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L282)\n\t\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L297)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L294-L304", + "id": "162a09c6744c38ec861b5ad8c5dc46412464e43cd266b5bfd7eefeb9a61079c3", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8118, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + }, + { + "type": "node", + "name": "shares = _rdiv(amount,_checkpointChi())", + "source_mapping": { + "start": 8305, + "length": 48, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 205 + ], + "starting_column": 9, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8118, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5623, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiDeposited(amount)", + "source_mapping": { + "start": 8364, + "length": 25, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 207 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8118, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "proportionalAddLiquidityQuote(uint256,uint256)" - } - }, - { - "type": "node", - "name": "ramos.poolHelper().proportionalAddLiquidityQuote(_quoteTokenAmount,_slippageBps)", - "source_mapping": { - "start": 6867, - "length": 88, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [174], - "starting_column": 9, - "ending_column": 97 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "proportionalAddLiquidityQuote", - "source_mapping": { - "start": 6569, - "length": 393, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "proportionalAddLiquidityQuote(uint256,uint256)" + ], + "description": "Reentrancy in DsrBaseStrategy._dsrDeposit(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#202-210):\n\tExternal calls:\n\t- shares = _rdiv(amount,_checkpointChi()) (contracts/v2/strategies/DsrBaseStrategy.sol#205)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#143)\n\tEvent emitted after the call(s):\n\t- DaiDeposited(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#207)\n", + "markdown": "Reentrancy in [DsrBaseStrategy._dsrDeposit(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L202-L210):\n\tExternal calls:\n\t- [shares = _rdiv(amount,_checkpointChi())](contracts/v2/strategies/DsrBaseStrategy.sol#L205)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L143)\n\tEvent emitted after the call(s):\n\t- [DaiDeposited(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L207)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L202-L210", + "id": "31ecea496d634c38d009ec8962d81c81c94608f13d1cb3e2fa53b0e77c9c34a8", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11654, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11686, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11734, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 282 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "RamosStrategy.proportionalAddLiquidityQuote(uint256,uint256) (contracts/v2/strategies/RamosStrategy.sol#165-175) ignores return value by ramos.poolHelper().proportionalAddLiquidityQuote(_quoteTokenAmount,_slippageBps) (contracts/v2/strategies/RamosStrategy.sol#174)\n", - "markdown": "[RamosStrategy.proportionalAddLiquidityQuote(uint256,uint256)](contracts/v2/strategies/RamosStrategy.sol#L165-L175) ignores return value by [ramos.poolHelper().proportionalAddLiquidityQuote(_quoteTokenAmount,_slippageBps)](contracts/v2/strategies/RamosStrategy.sol#L174)\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L165-L175", - "id": "b56d2f4548e025710d998bc242ac7f3032f0e8ea504c62f800fead5160f65786", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "proportionalRemoveLiquidityQuote", - "source_mapping": { - "start": 7587, - "length": 438, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in DsrBaseStrategy._dsrWithdrawal(uint256,uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#279-283):\n\tExternal calls:\n\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#282)\n", + "markdown": "Reentrancy in [DsrBaseStrategy._dsrWithdrawal(uint256,uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L279-L283):\n\tExternal calls:\n\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L282)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L279-L283", + "id": "e5458fd6a547ced33952741e22797ca1e9bc0a8205ea60a9cc8c50741df49c7d", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + }, + { + "type": "node", + "name": "_tokenVault.borrowProtocolToken(protocolTokenAmount,address(this))", + "source_mapping": { + "start": 20758, + "length": 67, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 483 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_tokenVault.borrowQuoteToken(quoteTokenAmount,address(this))", + "source_mapping": { + "start": 20835, + "length": 61, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 484 + ], + "starting_column": 9, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount)", + "source_mapping": { + "start": 20976, + "length": 80, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 488 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.approve(address(balancerVault),0)", + "source_mapping": { + "start": 21235, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 491 + ], + "starting_column": 17, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount)", + "source_mapping": { + "start": 21298, + "length": 74, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 492 + ], + "starting_column": 17, + "ending_column": 91 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "balancerVault.joinPool(balancerPoolId,address(this),address(this),request)", + "source_mapping": { + "start": 21515, + "length": 77, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 499 + ], + "starting_column": 13, + "ending_column": 90 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)", + "source_mapping": { + "start": 21791, + "length": 75, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 506 + ], + "starting_column": 9, + "ending_column": 84 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 19982, + "length": 2088, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1890, + "length": 24313, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "proportionalRemoveLiquidityQuote(uint256,uint256)" - } - }, - { - "type": "node", - "name": "ramos.poolHelper().proportionalRemoveLiquidityQuote(_bptAmount,_slippageBps)", - "source_mapping": { - "start": 7934, - "length": 84, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [202], - "starting_column": 9, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "proportionalRemoveLiquidityQuote", - "source_mapping": { - "start": 7587, - "length": 438, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "proportionalRemoveLiquidityQuote(uint256,uint256)" + ], + "description": "Reentrancy in Ramos.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/amo/Ramos.sol#464-513):\n\tExternal calls:\n\t- _tokenVault.borrowProtocolToken(protocolTokenAmount,address(this)) (contracts/amo/Ramos.sol#483)\n\t- _tokenVault.borrowQuoteToken(quoteTokenAmount,address(this)) (contracts/amo/Ramos.sol#484)\n\t- protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount) (contracts/amo/Ramos.sol#488)\n\t- quoteToken.approve(address(balancerVault),0) (contracts/amo/Ramos.sol#491)\n\t- quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount) (contracts/amo/Ramos.sol#492)\n\t- balancerVault.joinPool(balancerPoolId,address(this),address(this),request) (contracts/amo/Ramos.sol#499)\n\tEvent emitted after the call(s):\n\t- LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) (contracts/amo/Ramos.sol#506)\n", + "markdown": "Reentrancy in [Ramos.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/amo/Ramos.sol#L464-L513):\n\tExternal calls:\n\t- [_tokenVault.borrowProtocolToken(protocolTokenAmount,address(this))](contracts/amo/Ramos.sol#L483)\n\t- [_tokenVault.borrowQuoteToken(quoteTokenAmount,address(this))](contracts/amo/Ramos.sol#L484)\n\t- [protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount)](contracts/amo/Ramos.sol#L488)\n\t- [quoteToken.approve(address(balancerVault),0)](contracts/amo/Ramos.sol#L491)\n\t- [quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount)](contracts/amo/Ramos.sol#L492)\n\t- [balancerVault.joinPool(balancerPoolId,address(this),address(this),request)](contracts/amo/Ramos.sol#L499)\n\tEvent emitted after the call(s):\n\t- [LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)](contracts/amo/Ramos.sol#L506)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L464-L513", + "id": "9d1d41384a771213207142c0562efb08da2b45e1010143f4559901c2dd05fd06", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7866, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + }, + { + "type": "node", + "name": "treasuryReservesVault.borrow(daiToken,amount,address(this))", + "source_mapping": { + "start": 8015, + "length": 61, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 198 + ], + "starting_column": 9, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7866, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_dsrDeposit(amount)", + "source_mapping": { + "start": 8086, + "length": 19, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 199 + ], + "starting_column": 9, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7866, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5623, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.join(address(this),amount)", + "source_mapping": { + "start": 8399, + "length": 35, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 208 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8118, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pot.join(shares)", + "source_mapping": { + "start": 8444, + "length": 16, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 209 + ], + "starting_column": 9, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8118, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiDeposited(amount)", + "source_mapping": { + "start": 8364, + "length": 25, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 207 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8118, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrDeposit(amount)", + "source_mapping": { + "start": 8086, + "length": 19, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 199 + ], + "starting_column": 9, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7866, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "RamosStrategy.proportionalRemoveLiquidityQuote(uint256,uint256) (contracts/v2/strategies/RamosStrategy.sol#192-203) ignores return value by ramos.poolHelper().proportionalRemoveLiquidityQuote(_bptAmount,_slippageBps) (contracts/v2/strategies/RamosStrategy.sol#202)\n", - "markdown": "[RamosStrategy.proportionalRemoveLiquidityQuote(uint256,uint256)](contracts/v2/strategies/RamosStrategy.sol#L192-L203) ignores return value by [ramos.poolHelper().proportionalRemoveLiquidityQuote(_bptAmount,_slippageBps)](contracts/v2/strategies/RamosStrategy.sol#L202)\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L192-L203", - "id": "ed71e6585e1914cd70e3ed747dea0a932bd4ba9629191c626628ce16c695c11d", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "populateShutdownData", - "source_mapping": { - "start": 9022, - "length": 564, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in DsrBaseStrategy.borrowAndDeposit(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#196-200):\n\tExternal calls:\n\t- treasuryReservesVault.borrow(daiToken,amount,address(this)) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#199)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#143)\n\t\t- daiJoin.join(address(this),amount) (contracts/v2/strategies/DsrBaseStrategy.sol#208)\n\t\t- pot.join(shares) (contracts/v2/strategies/DsrBaseStrategy.sol#209)\n\tEvent emitted after the call(s):\n\t- DaiDeposited(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#207)\n\t\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#199)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.borrowAndDeposit(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L196-L200):\n\tExternal calls:\n\t- [treasuryReservesVault.borrow(daiToken,amount,address(this))](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L199)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L143)\n\t\t- [daiJoin.join(address(this),amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L208)\n\t\t- [pot.join(shares)](contracts/v2/strategies/DsrBaseStrategy.sol#L209)\n\tEvent emitted after the call(s):\n\t- [DaiDeposited(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L207)\n\t\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L199)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L196-L200", + "id": "9834f29d6227cb2437c23d0c4263e73bdb02e3f1fb272562d67035423d29b75a", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "checkpointAssetBalances", + "source_mapping": { + "start": 6945, + "length": 403, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "checkpointAssetBalances()" + } + }, + { + "type": "node", + "name": "(daiBalance) = _checkpointDaiBalance()", + "source_mapping": { + "start": 7068, + "length": 48, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 177 + ], + "starting_column": 9, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "checkpointAssetBalances", + "source_mapping": { + "start": 6945, + "length": 403, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "checkpointAssetBalances()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5623, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "AssetBalancesCheckpoint(assetBalances)", + "source_mapping": { + "start": 7298, + "length": 43, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 183 + ], + "starting_column": 9, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "checkpointAssetBalances", + "source_mapping": { + "start": 6945, + "length": 403, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "checkpointAssetBalances()" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "populateShutdownData(bytes)" - } - }, - { - "type": "node", - "name": "(shutdownParams.bptAmount,None,None) = ramos.positions()", - "source_mapping": { - "start": 9349, - "length": 48, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [240], - "starting_column": 9, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "populateShutdownData", - "source_mapping": { - "start": 9022, - "length": 564, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "populateShutdownData(bytes)" + ], + "description": "Reentrancy in DsrBaseStrategy.checkpointAssetBalances() (contracts/v2/strategies/DsrBaseStrategy.sol#174-184):\n\tExternal calls:\n\t- (daiBalance) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#177)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#143)\n\tEvent emitted after the call(s):\n\t- AssetBalancesCheckpoint(assetBalances) (contracts/v2/strategies/DsrBaseStrategy.sol#183)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.checkpointAssetBalances()](contracts/v2/strategies/DsrBaseStrategy.sol#L174-L184):\n\tExternal calls:\n\t- [(daiBalance) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L177)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L143)\n\tEvent emitted after the call(s):\n\t- [AssetBalancesCheckpoint(assetBalances)](contracts/v2/strategies/DsrBaseStrategy.sol#L183)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L174-L184", + "id": "28bbe38832a28ccf266a19f5289dcdb9aa9f4ec8fe21442656b0b094a7d3e4d8", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 7510, + "length": 779, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount)", + "source_mapping": { + "start": 8072, + "length": 82, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 208 + ], + "starting_column": 13, + "ending_column": 95 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 7510, + "length": 779, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "templeExposureToken.mint(address(this),_amount)", + "source_mapping": { + "start": 8168, + "length": 48, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 209 + ], + "starting_column": 13, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 7510, + "length": 779, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Deposit(_account,_amount,amountStaked)", + "source_mapping": { + "start": 8237, + "length": 45, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 212 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 7510, + "length": 779, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "RamosStrategy.populateShutdownData(bytes) (contracts/v2/strategies/RamosStrategy.sol#232-243) ignores return value by (shutdownParams.bptAmount,None,None) = ramos.positions() (contracts/v2/strategies/RamosStrategy.sol#240)\n", - "markdown": "[RamosStrategy.populateShutdownData(bytes)](contracts/v2/strategies/RamosStrategy.sol#L232-L243) ignores return value by [(shutdownParams.bptAmount,None,None) = ramos.positions()](contracts/v2/strategies/RamosStrategy.sol#L240)\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L232-L243", - "id": "e68b668794a623b6a5a283b3672d9ddf56508b69062c77c9f4af7f0faf1aa51e", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_doShutdown", - "source_mapping": { - "start": 9818, - "length": 631, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in Vault.depositFor(address,uint256) (contracts/core/Vault.sol#197-213):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount) (contracts/core/Vault.sol#208)\n\t- templeExposureToken.mint(address(this),_amount) (contracts/core/Vault.sol#209)\n\tEvent emitted after the call(s):\n\t- Deposit(_account,_amount,amountStaked) (contracts/core/Vault.sol#212)\n", + "markdown": "Reentrancy in [Vault.depositFor(address,uint256)](contracts/core/Vault.sol#L197-L213):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount)](contracts/core/Vault.sol#L208)\n\t- [templeExposureToken.mint(address(this),_amount)](contracts/core/Vault.sol#L209)\n\tEvent emitted after the call(s):\n\t- [Deposit(_account,_amount,amountStaked)](contracts/core/Vault.sol#L212)\n", + "first_markdown_element": "contracts/core/Vault.sol#L197-L213", + "id": "ebb83133d2c55f388b7a879287c817b42c43e839216db992d78182548c8bb9c8", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + }, + { + "type": "node", + "name": "daiToken.approve(previousTrv,0)", + "source_mapping": { + "start": 16002, + "length": 32, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 394 + ], + "starting_column": 13, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "daiToken.approve(_trv,0)", + "source_mapping": { + "start": 16245, + "length": 25, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 402 + ], + "starting_column": 13, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "daiToken.safeIncreaseAllowance(_trv,type()(uint256).max)", + "source_mapping": { + "start": 16284, + "length": 55, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 403 + ], + "starting_column": 13, + "ending_column": 68 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "TlcStrategySet(newTlcStrategy,_trv)", + "source_mapping": { + "start": 16360, + "length": 41, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 406 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 867, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31745, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_doShutdown(bytes)" - } - }, - { - "type": "node", - "name": "ramos.removeLiquidity(params.requestData,params.bptAmount)", - "source_mapping": { - "start": 9989, - "length": 59, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [252], - "starting_column": 9, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_doShutdown", - "source_mapping": { - "start": 9818, - "length": 631, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_doShutdown(bytes)" + ], + "description": "Reentrancy in TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410):\n\tExternal calls:\n\t- daiToken.approve(previousTrv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#394)\n\t- daiToken.approve(_trv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#402)\n\t- daiToken.safeIncreaseAllowance(_trv,type()(uint256).max) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#403)\n\tEvent emitted after the call(s):\n\t- TlcStrategySet(newTlcStrategy,_trv) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#406)\n", + "markdown": "Reentrancy in [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410):\n\tExternal calls:\n\t- [daiToken.approve(previousTrv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)\n\t- [daiToken.approve(_trv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L402)\n\t- [daiToken.safeIncreaseAllowance(_trv,type()(uint256).max)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L403)\n\tEvent emitted after the call(s):\n\t- [TlcStrategySet(newTlcStrategy,_trv)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L406)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410", + "id": "cfa890b99859a2b8b2e6b3888d77cf9b32c5168696c3c6327debc3ae48605370", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "trvWithdraw", + "source_mapping": { + "start": 10617, + "length": 947, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "trvWithdraw(uint256)" + } + }, + { + "type": "node", + "name": "(daiAvailable,chi,sharesAvailable) = _checkpointDaiBalance()", + "source_mapping": { + "start": 11067, + "length": 86, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 265 + ], + "starting_column": 9, + "ending_column": 95 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "trvWithdraw", + "source_mapping": { + "start": 10617, + "length": 947, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "trvWithdraw(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5623, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAmount,requestedAmount)", + "source_mapping": { + "start": 11422, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 274 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "trvWithdraw", + "source_mapping": { + "start": 10617, + "length": 947, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "trvWithdraw(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11654, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11686, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11734, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 282 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAmount,requestedAmount)", + "source_mapping": { + "start": 11422, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 274 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "trvWithdraw", + "source_mapping": { + "start": 10617, + "length": 947, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "trvWithdraw(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "RamosStrategy._doShutdown(bytes) (contracts/v2/strategies/RamosStrategy.sol#250-263) ignores return value by ramos.removeLiquidity(params.requestData,params.bptAmount) (contracts/v2/strategies/RamosStrategy.sol#252)\n", - "markdown": "[RamosStrategy._doShutdown(bytes)](contracts/v2/strategies/RamosStrategy.sol#L250-L263) ignores return value by [ramos.removeLiquidity(params.requestData,params.bptAmount)](contracts/v2/strategies/RamosStrategy.sol#L252)\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L250-L263", - "id": "cab4a6d607fc52a73a76b47684750061e88667af7fd3a9cc5e85e235479031b6", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_addLiquidity", - "source_mapping": { - "start": 1756, - "length": 1076, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in DsrBaseStrategy.trvWithdraw(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#258-277):\n\tExternal calls:\n\t- (daiAvailable,chi,sharesAvailable) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#265)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#143)\n\t- _dsrWithdrawal(sharesAmount,requestedAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#274)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#282)\n\t\t- _dsrWithdrawal(sharesAmount,requestedAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#274)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.trvWithdraw(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L258-L277):\n\tExternal calls:\n\t- [(daiAvailable,chi,sharesAvailable) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L265)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L143)\n\t- [_dsrWithdrawal(sharesAmount,requestedAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L274)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L282)\n\t\t- [_dsrWithdrawal(sharesAmount,requestedAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L274)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L258-L277", + "id": "401b0952f469a059bfad9dd68615d80d5f55390bdc4e739ea04ec726f1457acb", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawAndRepay", + "source_mapping": { + "start": 8566, + "length": 786, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepay(uint256)" + } + }, + { + "type": "node", + "name": "(daiAvailable,chi) = _checkpointDaiBalance()", + "source_mapping": { + "start": 8747, + "length": 63, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 218 + ], + "starting_column": 9, + "ending_column": 72 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepay", + "source_mapping": { + "start": 8566, + "length": 786, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepay(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5623, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAmount,withdrawalAmount)", + "source_mapping": { + "start": 9082, + "length": 46, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 223 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepay", + "source_mapping": { + "start": 8566, + "length": 786, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepay(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11654, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11686, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11734, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 282 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAmount,withdrawalAmount)", + "source_mapping": { + "start": 9082, + "length": 46, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 223 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepay", + "source_mapping": { + "start": 8566, + "length": 786, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepay(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_addLiquidity(uint256,uint256,uint256,uint256,IUniswapV2Pair)" - } - }, - { - "type": "node", - "name": "(reserveA,reserveB) = pair.getReserves()", - "source_mapping": { - "start": 1986, - "length": 52, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [68], - "starting_column": 9, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_addLiquidity", - "source_mapping": { - "start": 1756, - "length": 1076, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_addLiquidity(uint256,uint256,uint256,uint256,IUniswapV2Pair)" + ], + "description": "Reentrancy in DsrBaseStrategy.withdrawAndRepay(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#215-228):\n\tExternal calls:\n\t- (daiAvailable,chi) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#218)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#143)\n\t- _dsrWithdrawal(sharesAmount,withdrawalAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#223)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#282)\n\t\t- _dsrWithdrawal(sharesAmount,withdrawalAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#223)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.withdrawAndRepay(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L215-L228):\n\tExternal calls:\n\t- [(daiAvailable,chi) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L218)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L143)\n\t- [_dsrWithdrawal(sharesAmount,withdrawalAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L223)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L282)\n\t\t- [_dsrWithdrawal(sharesAmount,withdrawalAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L223)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L215-L228", + "id": "c7edede72a1a27d7719d096f09d6f9cccb736ab62247491688f54c0b49ec00d5", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawAndRepayAll", + "source_mapping": { + "start": 9469, + "length": 465, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepayAll()" + } + }, + { + "type": "node", + "name": "(daiAvailable,sharesAvailable) = _checkpointDaiBalance()", + "source_mapping": { + "start": 9556, + "length": 74, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 234 + ], + "starting_column": 9, + "ending_column": 83 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepayAll", + "source_mapping": { + "start": 9469, + "length": 465, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepayAll()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5623, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", + "source_mapping": { + "start": 9640, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 235 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepayAll", + "source_mapping": { + "start": 9469, + "length": 465, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepayAll()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11654, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11686, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11734, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 282 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11570, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279, + 280, + 281, + 282, + 283 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", + "source_mapping": { + "start": 9640, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 235 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepayAll", + "source_mapping": { + "start": 9469, + "length": 465, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepayAll()" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleStableAMMRouter._addLiquidity(uint256,uint256,uint256,uint256,IUniswapV2Pair) (contracts/amm/TempleStableAMMRouter.sol#61-83) ignores return value by (reserveA,reserveB) = pair.getReserves() (contracts/amm/TempleStableAMMRouter.sol#68)\n", - "markdown": "[TempleStableAMMRouter._addLiquidity(uint256,uint256,uint256,uint256,IUniswapV2Pair)](contracts/amm/TempleStableAMMRouter.sol#L61-L83) ignores return value by [(reserveA,reserveB) = pair.getReserves()](contracts/amm/TempleStableAMMRouter.sol#L68)\n", - "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L61-L83", - "id": "f24551aba47520a07ab79471d9ec9cfe2fe87cd09c197da35e42997dcded68a8", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "swapExactStableForTempleQuote", - "source_mapping": { - "start": 7556, - "length": 271, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [202, 203, 204, 205], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in DsrBaseStrategy.withdrawAndRepayAll() (contracts/v2/strategies/DsrBaseStrategy.sol#233-241):\n\tExternal calls:\n\t- (daiAvailable,sharesAvailable) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#234)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#143)\n\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#235)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#282)\n\t\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#235)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.withdrawAndRepayAll()](contracts/v2/strategies/DsrBaseStrategy.sol#L233-L241):\n\tExternal calls:\n\t- [(daiAvailable,sharesAvailable) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L234)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L143)\n\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L235)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L282)\n\t\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L235)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L233-L241", + "id": "fe23180575949413b7940f9b70be497cb6bdea47060c90d2a79fa4ab6132d5e4", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 8613, + "length": 355, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,address,uint256)" + } + }, + { + "type": "node", + "name": "templeExposureToken.redeemAmount(_amount,_to)", + "source_mapping": { + "start": 8873, + "length": 46, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 228 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 8613, + "length": 355, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Withdraw(_account,_amount)", + "source_mapping": { + "start": 8929, + "length": 32, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 229 + ], + "starting_column": 9, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 8613, + "length": 355, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "swapExactStableForTempleQuote(address,uint256)" - } - }, - { - "type": "node", - "name": "(reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves()", - "source_mapping": { - "start": 7672, - "length": 76, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [203], - "starting_column": 9, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapExactStableForTempleQuote", - "source_mapping": { - "start": 7556, - "length": 271, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [202, 203, 204, 205], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swapExactStableForTempleQuote(address,uint256)" + ], + "description": "Reentrancy in Vault.withdrawFor(address,address,uint256) (contracts/core/Vault.sol#221-230):\n\tExternal calls:\n\t- templeExposureToken.redeemAmount(_amount,_to) (contracts/core/Vault.sol#228)\n\tEvent emitted after the call(s):\n\t- Withdraw(_account,_amount) (contracts/core/Vault.sol#229)\n", + "markdown": "Reentrancy in [Vault.withdrawFor(address,address,uint256)](contracts/core/Vault.sol#L221-L230):\n\tExternal calls:\n\t- [templeExposureToken.redeemAmount(_amount,_to)](contracts/core/Vault.sol#L228)\n\tEvent emitted after the call(s):\n\t- [Withdraw(_account,_amount)](contracts/core/Vault.sol#L229)\n", + "first_markdown_element": "contracts/core/Vault.sol#L221-L230", + "id": "6fd4370ebad3ac9fb829c991eefe060da1a6b877d6cd27d4ce1a036b71cbf60f", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 4020, + "length": 543, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)" + } + }, + { + "type": "node", + "name": "require(bool,string)(block.timestamp <= deadline,Vault: expired deadline)", + "source_mapping": { + "start": 4138, + "length": 63, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 102 + ], + "starting_column": 9, + "ending_column": 72 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 4020, + "length": 543, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)" + } + } + } } - } - } - } - ], - "description": "TempleStableAMMRouter.swapExactStableForTempleQuote(address,uint256) (contracts/amm/TempleStableAMMRouter.sol#202-205) ignores return value by (reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves() (contracts/amm/TempleStableAMMRouter.sol#203)\n", - "markdown": "[TempleStableAMMRouter.swapExactStableForTempleQuote(address,uint256)](contracts/amm/TempleStableAMMRouter.sol#L202-L205) ignores return value by [(reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves()](contracts/amm/TempleStableAMMRouter.sol#L203)\n", - "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L202-L205", - "id": "bcaddbd83baa19b08f21d46eaa6d5040ec3da28323505b65de50fbfbd874521c", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "swapExactTempleForStableQuote", - "source_mapping": { - "start": 7833, - "length": 639, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Vault.withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32) (contracts/core/Vault.sol#101-111) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(block.timestamp <= deadline,Vault: expired deadline) (contracts/core/Vault.sol#102)\n", + "markdown": "[Vault.withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)](contracts/core/Vault.sol#L101-L111) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(block.timestamp <= deadline,Vault: expired deadline)](contracts/core/Vault.sol#L102)\n", + "first_markdown_element": "contracts/core/Vault.sol#L101-L111", + "id": "bb9efcff90e4bb74d66875557be4f6b4a954701b6fc59ab59a6bc0ba37184ee5", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5447, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + }, + { + "type": "node", + "name": "block.timestamp < firstPeriodStartTimestamp", + "source_mapping": { + "start": 5547, + "length": 43, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 13, + "ending_column": 56 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5447, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } + }, + { + "type": "node", + "name": "inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp", + "source_mapping": { + "start": 5871, + "length": 138, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 148 + ], + "starting_column": 9, + "ending_column": 147 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5447, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1216, + "length": 7882, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } } - }, - "signature": "swapExactTempleForStableQuote(address,uint256)" - } - }, - { - "type": "node", - "name": "(reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves()", - "source_mapping": { - "start": 7967, - "length": 76, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [208], - "starting_column": 9, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapExactTempleForStableQuote", - "source_mapping": { - "start": 7833, - "length": 639, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swapExactTempleForStableQuote(address,uint256)" + ], + "description": "Vault.inEnterExitWindow() (contracts/core/Vault.sol#141-149) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp < firstPeriodStartTimestamp (contracts/core/Vault.sol#142)\n\t- inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp (contracts/core/Vault.sol#148)\n", + "markdown": "[Vault.inEnterExitWindow()](contracts/core/Vault.sol#L141-L149) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp < firstPeriodStartTimestamp](contracts/core/Vault.sol#L142)\n\t- [inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp](contracts/core/Vault.sol#L148)\n", + "first_markdown_element": "contracts/core/Vault.sol#L141-L149", + "id": "773d81e019f7b3cd3b0ac4b32328669f6effcc4564c50e03f49f7061139ce5e7", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "latestDsrBalance", + "source_mapping": { + "start": 4986, + "length": 510, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "latestDsrBalance()" + } + }, + { + "type": "node", + "name": "(block.timestamp > rho)", + "source_mapping": { + "start": 5329, + "length": 109, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 137 + ], + "starting_column": 9, + "ending_column": 118 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "latestDsrBalance", + "source_mapping": { + "start": 4986, + "length": 510, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "latestDsrBalance()" + } + } + } } - } - } - } - ], - "description": "TempleStableAMMRouter.swapExactTempleForStableQuote(address,uint256) (contracts/amm/TempleStableAMMRouter.sol#207-221) ignores return value by (reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves() (contracts/amm/TempleStableAMMRouter.sol#208)\n", - "markdown": "[TempleStableAMMRouter.swapExactTempleForStableQuote(address,uint256)](contracts/amm/TempleStableAMMRouter.sol#L207-L221) ignores return value by [(reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves()](contracts/amm/TempleStableAMMRouter.sol#L208)\n", - "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L207-L221", - "id": "43ba957c0d22f3540a298f9bbbe3e7ef022879a661282996ee551c7d780c6394", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "rebalance", - "source_mapping": { - "start": 1808, - "length": 798, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "DsrBaseStrategy.latestDsrBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#130-139) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- (block.timestamp > rho) (contracts/v2/strategies/DsrBaseStrategy.sol#137)\n", + "markdown": "[DsrBaseStrategy.latestDsrBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L130-L139) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [(block.timestamp > rho)](contracts/v2/strategies/DsrBaseStrategy.sol#L137)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L130-L139", + "id": "e3cba99a159cdc8452b1f83625f58f1d175c9b0f107b589eee7690e16f8d25e8", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + }, + { + "type": "node", + "name": "(block.timestamp > pot.rho())", + "source_mapping": { + "start": 5623, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5502, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11801, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + } } - }, - "signature": "rebalance(Vault,TreasuryFarmingRevenue)" - } - }, - { - "type": "node", - "name": "(inWindow) = vault.inEnterExitWindow()", - "source_mapping": { - "start": 1916, - "length": 45, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [59], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalance", - "source_mapping": { - "start": 1808, - "length": 798, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { + ], + "description": "DsrBaseStrategy._checkpointChi() (contracts/v2/strategies/DsrBaseStrategy.sol#141-144) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- (block.timestamp > pot.rho()) (contracts/v2/strategies/DsrBaseStrategy.sol#143)\n", + "markdown": "[DsrBaseStrategy._checkpointChi()](contracts/v2/strategies/DsrBaseStrategy.sol#L141-L144) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [(block.timestamp > pot.rho())](contracts/v2/strategies/DsrBaseStrategy.sol#L143)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L141-L144", + "id": "8064f6bfe9596d2d52a5dcb31598ebda9f9336192395ad9e5910f3706548efdd", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalance(Vault,TreasuryFarmingRevenue)" - } - } - } - } - ], - "description": "OpsManagerLib.rebalance(Vault,TreasuryFarmingRevenue) (contracts/core/OpsManagerLib.sol#55-72) ignores return value by (inWindow) = vault.inEnterExitWindow() (contracts/core/OpsManagerLib.sol#59)\n", - "markdown": "[OpsManagerLib.rebalance(Vault,TreasuryFarmingRevenue)](contracts/core/OpsManagerLib.sol#L55-L72) ignores return value by [(inWindow) = vault.inEnterExitWindow()](contracts/core/OpsManagerLib.sol#L59)\n", - "first_markdown_element": "contracts/core/OpsManagerLib.sol#L55-L72", - "id": "7e51402c4c3f903960137b695ab80a5a95e96c56eb93a4b7d980470911d0bde6", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "requiresRebalance", - "source_mapping": { - "start": 2821, - "length": 553, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" - } - }, - { - "type": "node", - "name": "(inWindow) = vaults[i].inEnterExitWindow()", - "source_mapping": { - "start": 3101, - "length": 49, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [86], - "starting_column": 13, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "requiresRebalance", - "source_mapping": { - "start": 2821, - "length": 553, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { + "name": "TempleERC20Token", + "source_mapping": { + "start": 425, + "length": 634, + "filename_relative": "contracts/core/TempleERC20Token.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/core/TempleERC20Token.sol", + "filename_short": "contracts/core/TempleERC20Token.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + { "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" + "name": "ITempleERC20Token", + "source_mapping": { + "start": 195, + "length": 611, + "filename_relative": "contracts/interfaces/core/ITempleERC20Token.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/interfaces/core/ITempleERC20Token.sol", + "filename_short": "contracts/interfaces/core/ITempleERC20Token.sol", + "is_dependency": false, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ], + "starting_column": 1, + "ending_column": 0 + } } - } - } - } - ], - "description": "OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue) (contracts/core/OpsManagerLib.sol#79-95) ignores return value by (inWindow) = vaults[i].inEnterExitWindow() (contracts/core/OpsManagerLib.sol#86)\n", - "markdown": "[OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue)](contracts/core/OpsManagerLib.sol#L79-L95) ignores return value by [(inWindow) = vaults[i].inEnterExitWindow()](contracts/core/OpsManagerLib.sol#L86)\n", - "first_markdown_element": "contracts/core/OpsManagerLib.sol#L79-L95", - "id": "0d939f6443be831bd662e4b85b8b26b8ca9716b8fd984c5961f3bbf84c6a1301", - "check": "unused-return", - "impact": "Medium", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "quoteToken", - "source_mapping": { - "start": 4822, - "length": 18, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [103], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "maxRebalanceAmounts", - "source_mapping": { - "start": 4738, - "length": 140, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [101, 102, 103, 104, 105], - "starting_column": 5, - "ending_column": 7 - }, - "type_specific_fields": { - "parent": { + ], + "description": "TempleERC20Token (contracts/core/TempleERC20Token.sol#11-31) should inherit from ITempleERC20Token (contracts/interfaces/core/ITempleERC20Token.sol#7-30)\n", + "markdown": "[TempleERC20Token](contracts/core/TempleERC20Token.sol#L11-L31) should inherit from [ITempleERC20Token](contracts/interfaces/core/ITempleERC20Token.sol#L7-L30)\n", + "first_markdown_element": "contracts/core/TempleERC20Token.sol#L11-L31", + "id": "1012fc2683a6f016ab688afd7c9d40e0a123132cb6ea9676b420d4c39ed23cd9", + "check": "missing-inheritance", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { "type": "contract", - "name": "IRamos", - "source_mapping": { - "start": 1408, - "length": 10519, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "maxRebalanceAmounts()" - } - } - } - }, - { - "type": "function", - "name": "quoteToken", - "source_mapping": { - "start": 3767, - "length": 53, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [80], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IRamos", - "source_mapping": { - "start": 1408, - "length": 10519, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "quoteToken()" - } - } - ], - "description": "IRamos.maxRebalanceAmounts().quoteToken (contracts/interfaces/amo/IRamos.sol#103) shadows:\n\t- IRamos.quoteToken() (contracts/interfaces/amo/IRamos.sol#80) (function)\n", - "markdown": "[IRamos.maxRebalanceAmounts().quoteToken](contracts/interfaces/amo/IRamos.sol#L103) shadows:\n\t- [IRamos.quoteToken()](contracts/interfaces/amo/IRamos.sol#L80) (function)\n", - "first_markdown_element": "contracts/interfaces/amo/IRamos.sol#L103", - "id": "a030cfdb07ff13cdfeb8487608a714d3b198ff28886a8ef272f9e70a87a70f0a", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "protocolToken", - "source_mapping": { - "start": 4850, - "length": 21, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [104], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "maxRebalanceAmounts", - "source_mapping": { - "start": 4738, - "length": 140, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [101, 102, 103, 104, 105], - "starting_column": 5, - "ending_column": 7 - }, - "type_specific_fields": { - "parent": { + "name": "OGTemple", + "source_mapping": { + "start": 537, + "length": 225, + "filename_relative": "contracts/deprecated/OGTemple.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/deprecated/OGTemple.sol", + "filename_short": "contracts/deprecated/OGTemple.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + { "type": "contract", - "name": "IRamos", - "source_mapping": { - "start": 1408, - "length": 10519, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "maxRebalanceAmounts()" - } - } - } - }, - { - "type": "function", - "name": "protocolToken", - "source_mapping": { - "start": 3567, - "length": 56, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [76], - "starting_column": 5, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "IRamos", - "source_mapping": { - "start": 1408, - "length": 10519, - "filename_relative": "contracts/interfaces/amo/IRamos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", - "filename_short": "contracts/interfaces/amo/IRamos.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276 - ], - "starting_column": 1, - "ending_column": 0 + "name": "ITempleERC20Token", + "source_mapping": { + "start": 195, + "length": 611, + "filename_relative": "contracts/interfaces/core/ITempleERC20Token.sol", + "filename_absolute": "/Users/pb/code/templedao/mar_2024/upgrade_oz/temple/protocol/contracts/interfaces/core/ITempleERC20Token.sol", + "filename_short": "contracts/interfaces/core/ITempleERC20Token.sol", + "is_dependency": false, + "lines": [ + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ], + "starting_column": 1, + "ending_column": 0 + } } - }, - "signature": "protocolToken()" - } - } - ], - "description": "IRamos.maxRebalanceAmounts().protocolToken (contracts/interfaces/amo/IRamos.sol#104) shadows:\n\t- IRamos.protocolToken() (contracts/interfaces/amo/IRamos.sol#76) (function)\n", - "markdown": "[IRamos.maxRebalanceAmounts().protocolToken](contracts/interfaces/amo/IRamos.sol#L104) shadows:\n\t- [IRamos.protocolToken()](contracts/interfaces/amo/IRamos.sol#L76) (function)\n", - "first_markdown_element": "contracts/interfaces/amo/IRamos.sol#L104", - "id": "99988e8d4356d61dc22dc1203ce47d52bd194ee6c04869d1c08b03332a4a64b3", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "baseShares", - "source_mapping": { - "start": 3468, - "length": 18, - "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", - "is_dependency": false, - "lines": [86], - "starting_column": 9, - "ending_column": 27 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "debtors", - "source_mapping": { - "start": 3219, - "length": 737, - "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97 - ], - "starting_column": 5, - "ending_column": 7 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ITempleDebtToken", - "source_mapping": { - "start": 325, - "length": 8309, - "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "debtors(address)" + ], + "description": "OGTemple (contracts/deprecated/OGTemple.sol#16-23) should inherit from ITempleERC20Token (contracts/interfaces/core/ITempleERC20Token.sol#7-30)\n", + "markdown": "[OGTemple](contracts/deprecated/OGTemple.sol#L16-L23) should inherit from [ITempleERC20Token](contracts/interfaces/core/ITempleERC20Token.sol#L7-L30)\n", + "first_markdown_element": "contracts/deprecated/OGTemple.sol#L16-L23", + "id": "d796780be51036fc47b271e699d52424bbe664783a4a7b47c3984deb2cce03bb", + "check": "missing-inheritance", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7809, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 195, + 196, + 197, + 198, + 199 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + }, + { + "type": "node", + "name": "treasuryReservesVault.borrow(daiToken,amount,address(this))", + "source_mapping": { + "start": 7958, + "length": 61, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 197 + ], + "starting_column": 9, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7809, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 195, + 196, + 197, + 198, + 199 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_dsrDeposit(amount)", + "source_mapping": { + "start": 8029, + "length": 19, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 198 + ], + "starting_column": 9, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7809, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 195, + 196, + 197, + 198, + 199 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "daiJoin.join(address(this),amount)", + "source_mapping": { + "start": 8342, + "length": 35, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 207 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8061, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5566, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pot.join(shares)", + "source_mapping": { + "start": 8387, + "length": 16, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 208 + ], + "starting_column": 9, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8061, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiDeposited(amount)", + "source_mapping": { + "start": 8307, + "length": 25, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 206 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8061, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrDeposit(amount)", + "source_mapping": { + "start": 8029, + "length": 19, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 198 + ], + "starting_column": 9, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7809, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 195, + 196, + 197, + 198, + 199 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - }, - { - "type": "function", - "name": "baseShares", - "source_mapping": { - "start": 1667, - "length": 54, - "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", - "is_dependency": false, - "lines": [42], - "starting_column": 5, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ITempleDebtToken", - "source_mapping": { - "start": 325, - "length": 8309, - "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", - "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in DsrBaseStrategy.borrowAndDeposit(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#195-199):\n\tExternal calls:\n\t- treasuryReservesVault.borrow(daiToken,amount,address(this)) (contracts/v2/strategies/DsrBaseStrategy.sol#197)\n\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n\t\t- daiJoin.join(address(this),amount) (contracts/v2/strategies/DsrBaseStrategy.sol#207)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t\t- pot.join(shares) (contracts/v2/strategies/DsrBaseStrategy.sol#208)\n\tEvent emitted after the call(s):\n\t- DaiDeposited(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#206)\n\t\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.borrowAndDeposit(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L195-L199):\n\tExternal calls:\n\t- [treasuryReservesVault.borrow(daiToken,amount,address(this))](contracts/v2/strategies/DsrBaseStrategy.sol#L197)\n\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n\t\t- [daiJoin.join(address(this),amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L207)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t\t- [pot.join(shares)](contracts/v2/strategies/DsrBaseStrategy.sol#L208)\n\tEvent emitted after the call(s):\n\t- [DaiDeposited(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L206)\n\t\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L195-L199", + "id": "6f150fd09fac2796a24b461a93dcda378e0b73d3d94cc538625af3f9b9d80747", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_swap", + "source_mapping": { + "start": 13928, + "length": 768, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MultiOtcOffer", + "source_mapping": { + "start": 1163, + "length": 13535, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_swap(bytes32,uint256)" + } + }, + { + "type": "node", + "name": "_userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount)", + "source_mapping": { + "start": 14618, + "length": 71, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 306 + ], + "starting_column": 9, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_swap", + "source_mapping": { + "start": 13928, + "length": 768, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MultiOtcOffer", + "source_mapping": { + "start": 1163, + "length": 13535, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_swap(bytes32,uint256)" + } + } + } } - }, - "signature": "baseShares()" - } - } - ], - "description": "ITempleDebtToken.debtors(address).baseShares (contracts/interfaces/v2/ITempleDebtToken.sol#86) shadows:\n\t- ITempleDebtToken.baseShares() (contracts/interfaces/v2/ITempleDebtToken.sol#42) (function)\n", - "markdown": "[ITempleDebtToken.debtors(address).baseShares](contracts/interfaces/v2/ITempleDebtToken.sol#L86) shadows:\n\t- [ITempleDebtToken.baseShares()](contracts/interfaces/v2/ITempleDebtToken.sol#L42) (function)\n", - "first_markdown_element": "contracts/interfaces/v2/ITempleDebtToken.sol#L86", - "id": "660d8ad3fe151743a4b6eac08ff790cbd92361508e6a7e1ac51d359fbd40579a", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "borrow", - "source_mapping": { - "start": 11494, - "length": 11, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [291], - "starting_column": 30, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setGlobalPaused", - "source_mapping": { - "start": 11469, - "length": 60, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [291], - "starting_column": 5, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ITreasuryReservesVault", - "source_mapping": { - "start": 1896, - "length": 12436, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setGlobalPaused(bool,bool)" + ], + "description": "MultiOtcOffer._swap(bytes32,uint256) (contracts/core/MultiOtcOffer.sol#296-307) uses arbitrary from in transferFrom: _userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount) (contracts/core/MultiOtcOffer.sol#306)\n", + "markdown": "[MultiOtcOffer._swap(bytes32,uint256)](contracts/core/MultiOtcOffer.sol#L296-L307) uses arbitrary from in transferFrom: [_userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount)](contracts/core/MultiOtcOffer.sol#L306)\n", + "first_markdown_element": "contracts/core/MultiOtcOffer.sol#L296-L307", + "id": "5fcc674f3a64b4a8a632801f25795f7fc58332f3a16f9dbb5c2653279f239534", + "check": "arbitrary-send-erc20", + "impact": "High", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 5765, + "length": 517, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OtcOffer", + "source_mapping": { + "start": 847, + "length": 6468, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swap(uint256)" + } + }, + { + "type": "node", + "name": "userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount)", + "source_mapping": { + "start": 6205, + "length": 70, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 140 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 5765, + "length": 517, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OtcOffer", + "source_mapping": { + "start": 847, + "length": 6468, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "swap(uint256)" + } + } + } } - } - } - }, - { - "type": "function", - "name": "borrow", - "source_mapping": { - "start": 13392, - "length": 80, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [336], - "starting_column": 5, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ITreasuryReservesVault", - "source_mapping": { - "start": 1896, - "length": 12436, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "OtcOffer.swap(uint256) (contracts/core/OtcOffer.sol#131-141) uses arbitrary from in transferFrom: userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount) (contracts/core/OtcOffer.sol#140)\n", + "markdown": "[OtcOffer.swap(uint256)](contracts/core/OtcOffer.sol#L131-L141) uses arbitrary from in transferFrom: [userBuyToken.safeTransferFrom(_fundsOwner,msg.sender,buyTokenAmount)](contracts/core/OtcOffer.sol#L140)\n", + "first_markdown_element": "contracts/core/OtcOffer.sol#L131-L141", + "id": "05d3d20016db7bcfcaa4746897ba0c55c97e64e9bbf77842db5d2e2d9ceae5fd", + "check": "arbitrary-send-erc20", + "impact": "High", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + }, + { + "type": "node", + "name": "blockTimestamp = uint32(block.timestamp % 2 ** 32)", + "source_mapping": { + "start": 3302, + "length": 55, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 82 + ], + "starting_column": 9, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + } } - }, - "signature": "borrow(IERC20,uint256,address)" - } - } - ], - "description": "ITreasuryReservesVault.setGlobalPaused(bool,bool).borrow (contracts/interfaces/v2/ITreasuryReservesVault.sol#291) shadows:\n\t- ITreasuryReservesVault.borrow(IERC20,uint256,address) (contracts/interfaces/v2/ITreasuryReservesVault.sol#336) (function)\n", - "markdown": "[ITreasuryReservesVault.setGlobalPaused(bool,bool).borrow](contracts/interfaces/v2/ITreasuryReservesVault.sol#L291) shadows:\n\t- [ITreasuryReservesVault.borrow(IERC20,uint256,address)](contracts/interfaces/v2/ITreasuryReservesVault.sol#L336) (function)\n", - "first_markdown_element": "contracts/interfaces/v2/ITreasuryReservesVault.sol#L291", - "id": "ee178bdb812ac154f4b12235ea96012285731106c401b64ca146c3171f9f2b58", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "borrow", - "source_mapping": { - "start": 11679, - "length": 11, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [296], - "starting_column": 50, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setStrategyPaused", - "source_mapping": { - "start": 11634, - "length": 80, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [296], - "starting_column": 5, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ITreasuryReservesVault", - "source_mapping": { - "start": 1896, - "length": 12436, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setStrategyPaused(address,bool,bool)" - } - } - } - }, - { - "type": "function", - "name": "borrow", - "source_mapping": { - "start": 13392, - "length": 80, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [336], - "starting_column": 5, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ITreasuryReservesVault", - "source_mapping": { - "start": 1896, - "length": 12436, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrow(IERC20,uint256,address)" - } - } - ], - "description": "ITreasuryReservesVault.setStrategyPaused(address,bool,bool).borrow (contracts/interfaces/v2/ITreasuryReservesVault.sol#296) shadows:\n\t- ITreasuryReservesVault.borrow(IERC20,uint256,address) (contracts/interfaces/v2/ITreasuryReservesVault.sol#336) (function)\n", - "markdown": "[ITreasuryReservesVault.setStrategyPaused(address,bool,bool).borrow](contracts/interfaces/v2/ITreasuryReservesVault.sol#L296) shadows:\n\t- [ITreasuryReservesVault.borrow(IERC20,uint256,address)](contracts/interfaces/v2/ITreasuryReservesVault.sol#L336) (function)\n", - "first_markdown_element": "contracts/interfaces/v2/ITreasuryReservesVault.sol#L296", - "id": "1f2b144fa0b8083ee1a1ca697a2403bf2d85ddb7223aae096e89a677da991192", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "amountOut_scope_0", - "source_mapping": { - "start": 4835, - "length": 62, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [133], - "starting_column": 9, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapExactStableForTemple", - "source_mapping": { - "start": 4485, - "length": 687, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swapExactStableForTemple(uint256,uint256,address,address,uint256)" + ], + "description": "TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93) uses a weak PRNG: \"blockTimestamp = uint32(block.timestamp % 2 ** 32) (contracts/amm/TempleUniswapV2Pair.sol#82)\" \n", + "markdown": "[TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93) uses a weak PRNG: \"[blockTimestamp = uint32(block.timestamp % 2 ** 32)](contracts/amm/TempleUniswapV2Pair.sol#L82)\" \n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L80-L93", + "id": "290357789cffd43bf264062cb5a528e9a368f77182c65ce7dcfbd4feb9020833", + "check": "weak-prng", + "impact": "High", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "nonces", + "source_mapping": { + "start": 1578, + "length": 50, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 45 + ], + "starting_column": 5, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 908, + "length": 5057, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + } + } + }, + { + "type": "function", + "name": "_useNonce", + "source_mapping": { + "start": 4540, + "length": 196, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 138, + 139, + 140, + 141, + 142 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 908, + "length": 5057, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_useNonce(address)" + } } - } - } - }, - { - "type": "variable", - "name": "amountOut", - "source_mapping": { - "start": 4685, - "length": 14, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [128], - "starting_column": 50, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapExactStableForTemple", - "source_mapping": { - "start": 4485, - "length": 687, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swapExactStableForTemple(uint256,uint256,address,address,uint256)" + ], + "description": "ElderElection.nonces (contracts/governance/ElderElection.sol#45) is never initialized. It is used in:\n\t- ElderElection._useNonce(address) (contracts/governance/ElderElection.sol#138-142)\n", + "markdown": "[ElderElection.nonces](contracts/governance/ElderElection.sol#L45) is never initialized. It is used in:\n\t- [ElderElection._useNonce(address)](contracts/governance/ElderElection.sol#L138-L142)\n", + "first_markdown_element": "contracts/governance/ElderElection.sol#L45", + "id": "a16c4c3a7455ad8f717c8aaf616d23de5d06be103f191c78e6dc3fdbb5eff5e8", + "check": "uninitialized-state", + "impact": "High", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "calc", + "source_mapping": { + "start": 836, + "length": 613, + "filename_relative": "contracts/core/JoiningFee.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", + "filename_short": "contracts/core/JoiningFee.sol", + "is_dependency": false, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "JoiningFee", + "source_mapping": { + "start": 461, + "length": 1345, + "filename_relative": "contracts/core/JoiningFee.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", + "filename_short": "contracts/core/JoiningFee.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "calc(uint256,uint256,address)" + } + }, + { + "type": "node", + "name": "(block.timestamp - (numCycles * periodDuration) - firstPeriodStartTimestamp) / 3600 * feePerHour", + "source_mapping": { + "start": 1339, + "length": 103, + "filename_relative": "contracts/core/JoiningFee.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", + "filename_short": "contracts/core/JoiningFee.sol", + "is_dependency": false, + "lines": [ + 38 + ], + "starting_column": 9, + "ending_column": 112 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "calc", + "source_mapping": { + "start": 836, + "length": 613, + "filename_relative": "contracts/core/JoiningFee.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", + "filename_short": "contracts/core/JoiningFee.sol", + "is_dependency": false, + "lines": [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "JoiningFee", + "source_mapping": { + "start": 461, + "length": 1345, + "filename_relative": "contracts/core/JoiningFee.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/JoiningFee.sol", + "filename_short": "contracts/core/JoiningFee.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "calc(uint256,uint256,address)" + } + } + } } - } - } - }, - { - "type": "variable", - "name": "amountOut", - "source_mapping": { - "start": 4685, - "length": 14, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [128], - "starting_column": 50, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapExactStableForTemple", - "source_mapping": { - "start": 4485, - "length": 687, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swapExactStableForTemple(uint256,uint256,address,address,uint256)" + ], + "description": "JoiningFee.calc(uint256,uint256,address) (contracts/core/JoiningFee.sol#26-39) performs a multiplication on the result of a division:\n\t- (block.timestamp - (numCycles * periodDuration) - firstPeriodStartTimestamp) / 3600 * feePerHour (contracts/core/JoiningFee.sol#38)\n", + "markdown": "[JoiningFee.calc(uint256,uint256,address)](contracts/core/JoiningFee.sol#L26-L39) performs a multiplication on the result of a division:\n\t- [(block.timestamp - (numCycles * periodDuration) - firstPeriodStartTimestamp) / 3600 * feePerHour](contracts/core/JoiningFee.sol#L38)\n", + "first_markdown_element": "contracts/core/JoiningFee.sol#L26-L39", + "id": "c0d4beb09bbb97e4ec3e7a9e3bd4fc713e216c086a2436671c0e4fdbaa26965b", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5359, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + }, + { + "type": "node", + "name": "cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration", + "source_mapping": { + "start": 5697, + "length": 76, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 146 + ], + "starting_column": 9, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5359, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } + }, + { + "type": "node", + "name": "inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp", + "source_mapping": { + "start": 5783, + "length": 138, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 147 + ], + "starting_column": 9, + "ending_column": 147 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5359, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } } - } - } - }, - { - "type": "variable", - "name": "amountOut", - "source_mapping": { - "start": 4685, - "length": 14, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [128], - "starting_column": 50, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swapExactStableForTemple", - "source_mapping": { - "start": 4485, - "length": 687, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swapExactStableForTemple(uint256,uint256,address,address,uint256)" + ], + "description": "Vault.inEnterExitWindow() (contracts/core/Vault.sol#140-148) performs a multiplication on the result of a division:\n\t- cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration (contracts/core/Vault.sol#146)\n\t- inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp (contracts/core/Vault.sol#147)\n", + "markdown": "[Vault.inEnterExitWindow()](contracts/core/Vault.sol#L140-L148) performs a multiplication on the result of a division:\n\t- [cycleNumber = (block.timestamp - firstPeriodStartTimestamp) / periodDuration](contracts/core/Vault.sol#L146)\n\t- [inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp](contracts/core/Vault.sol#L147)\n", + "first_markdown_element": "contracts/core/Vault.sol#L140-L148", + "id": "3aabd4762a2fde5d3ca708a653713c64a4f9b65daaecb672955c03acd76d5927", + "check": "divide-before-multiply", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + }, + { + "type": "node", + "name": "require(bool,string)(success && (data.length == 0 || abi.decode(data,(bool))),UniswapV2: TRANSFER_FAILED)", + "source_mapping": { + "start": 2073, + "length": 96, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 51 + ], + "starting_column": 9, + "ending_column": 105 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + } } - } - } - } - ], - "description": "TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut_scope_0 (contracts/amm/TempleStableAMMRouter.sol#133) shadows:\n\t- TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut (contracts/amm/TempleStableAMMRouter.sol#128) (return variable)\n\t- TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut (contracts/amm/TempleStableAMMRouter.sol#128) (return variable)\n\t- TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut (contracts/amm/TempleStableAMMRouter.sol#128) (return variable)\n", - "markdown": "[TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut_scope_0](contracts/amm/TempleStableAMMRouter.sol#L133) shadows:\n\t- [TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut](contracts/amm/TempleStableAMMRouter.sol#L128) (return variable)\n\t- [TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut](contracts/amm/TempleStableAMMRouter.sol#L128) (return variable)\n\t- [TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut](contracts/amm/TempleStableAMMRouter.sol#L128) (return variable)\n", - "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L133", - "id": "dfcbde91a2b5ed5d0d5ed22c62f0b14c024b922a48014a11601682bab0c693fa", - "check": "shadowing-local", - "impact": "Low", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "setEpy", - "source_mapping": { - "start": 2547, - "length": 212, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [72, 73, 74, 75], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleUniswapV2Pair._safeTransfer(address,address,uint256) (contracts/amm/TempleUniswapV2Pair.sol#49-52) uses a dangerous strict equality:\n\t- require(bool,string)(success && (data.length == 0 || abi.decode(data,(bool))),UniswapV2: TRANSFER_FAILED) (contracts/amm/TempleUniswapV2Pair.sol#51)\n", + "markdown": "[TempleUniswapV2Pair._safeTransfer(address,address,uint256)](contracts/amm/TempleUniswapV2Pair.sol#L49-L52) uses a dangerous strict equality:\n\t- [require(bool,string)(success && (data.length == 0 || abi.decode(data,(bool))),UniswapV2: TRANSFER_FAILED)](contracts/amm/TempleUniswapV2Pair.sol#L51)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L49-L52", + "id": "2ee4045d0f377d6f8b394394680249a386668a22c42975e90902df9d8fa3b850", + "check": "incorrect-equality", + "impact": "Medium", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "mint", + "source_mapping": { + "start": 4063, + "length": 1069, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "mint(address)" + } + }, + { + "type": "node", + "name": "_totalSupply == 0", + "source_mapping": { + "start": 4568, + "length": 17, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 104 + ], + "starting_column": 13, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "mint", + "source_mapping": { + "start": 4063, + "length": 1069, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "mint(address)" + } + } + } } - }, - "signature": "setEpy(uint256,uint256)" - } - }, - { - "type": "node", - "name": "epy = ABDKMath64x64.fromUInt(1).add(ABDKMath64x64.divu(_numerator,_denominator))", - "source_mapping": { - "start": 2671, - "length": 81, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [74], - "starting_column": 9, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setEpy", - "source_mapping": { - "start": 2547, - "length": 212, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [72, 73, 74, 75], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setEpy(uint256,uint256)" + ], + "description": "TempleUniswapV2Pair.mint(address) (contracts/amm/TempleUniswapV2Pair.sol#96-115) uses a dangerous strict equality:\n\t- _totalSupply == 0 (contracts/amm/TempleUniswapV2Pair.sol#104)\n", + "markdown": "[TempleUniswapV2Pair.mint(address)](contracts/amm/TempleUniswapV2Pair.sol#L96-L115) uses a dangerous strict equality:\n\t- [_totalSupply == 0](contracts/amm/TempleUniswapV2Pair.sol#L104)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L96-L115", + "id": "f3faa53f859ed259e9ff2509250c109f539dc4c8a41ed53a9c3a3342c73a4cea", + "check": "incorrect-equality", + "impact": "Medium", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "amountPerShare", + "source_mapping": { + "start": 4981, + "length": 372, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "amountPerShare()" + } + }, + { + "type": "node", + "name": "p == 0", + "source_mapping": { + "start": 5257, + "length": 6, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 131 + ], + "starting_column": 13, + "ending_column": 19 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "amountPerShare", + "source_mapping": { + "start": 4981, + "length": 372, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "amountPerShare()" + } + } + } } - } - } - } - ], - "description": "TempleStaking.setEpy(uint256,uint256) (contracts/deprecated/TempleStaking.sol#72-75) should emit an event for: \n\t- epy = ABDKMath64x64.fromUInt(1).add(ABDKMath64x64.divu(_numerator,_denominator)) (contracts/deprecated/TempleStaking.sol#74) \n", - "markdown": "[TempleStaking.setEpy(uint256,uint256)](contracts/deprecated/TempleStaking.sol#L72-L75) should emit an event for: \n\t- [epy = ABDKMath64x64.fromUInt(1).add(ABDKMath64x64.divu(_numerator,_denominator))](contracts/deprecated/TempleStaking.sol#L74) \n", - "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L72-L75", - "id": "66bcff6498cebf5796c64af18f0c23c346a69b2f3379e2371869c68331d2d460", - "check": "events-maths", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_owner", - "source_mapping": { - "start": 2665, - "length": 14, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [67], - "starting_column": 17, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 2653, - "length": 152, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [67, 68, 69, 70, 71], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address)" + ], + "description": "Vault.amountPerShare() (contracts/core/Vault.sol#125-138) uses a dangerous strict equality:\n\t- p == 0 (contracts/core/Vault.sol#131)\n", + "markdown": "[Vault.amountPerShare()](contracts/core/Vault.sol#L125-L138) uses a dangerous strict equality:\n\t- [p == 0](contracts/core/Vault.sol#L131)\n", + "first_markdown_element": "contracts/core/Vault.sol#L125-L138", + "id": "4158c1e69d81519dc5989e6d6c111d02083aaaabb931ca68f7b53bccf0ab30fa", + "check": "incorrect-equality", + "impact": "Medium", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token0,to,amount0)", + "source_mapping": { + "start": 6213, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 131 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token1,to,amount1)", + "source_mapping": { + "start": 6258, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 132 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 6426, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 136 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "blockTimestampLast" + } + }, + { + "type": "node", + "name": "blockTimestampLast = blockTimestamp", + "source_mapping": { + "start": 3873, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "blockTimestampLast" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 6426, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 136 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "reserve0" + } + }, + { + "type": "node", + "name": "reserve0 = uint112(balance0)", + "source_mapping": { + "start": 3797, + "length": 28, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 89 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "reserve0" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 6426, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 136 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "reserve1" + } + }, + { + "type": "node", + "name": "reserve1 = uint112(balance1)", + "source_mapping": { + "start": 3835, + "length": 28, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 90 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "reserve1" + } } - } - } - }, - { - "type": "node", - "name": "owner = _owner", - "source_mapping": { - "start": 2732, - "length": 14, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [68], - "starting_column": 9, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 2653, - "length": 152, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [67, 68, 69, 70, 71], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address)" + ], + "description": "Reentrancy in TempleUniswapV2Pair.burn(address) (contracts/amm/TempleUniswapV2Pair.sol#118-138):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0) (contracts/amm/TempleUniswapV2Pair.sol#131)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1) (contracts/amm/TempleUniswapV2Pair.sol#132)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\tState variables written after the call(s):\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- blockTimestampLast = blockTimestamp (contracts/amm/TempleUniswapV2Pair.sol#91)\n\tTempleUniswapV2Pair.blockTimestampLast (contracts/amm/TempleUniswapV2Pair.sol#25) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- reserve0 = uint112(balance0) (contracts/amm/TempleUniswapV2Pair.sol#89)\n\tTempleUniswapV2Pair.reserve0 (contracts/amm/TempleUniswapV2Pair.sol#23) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- TempleUniswapV2Pair.skim(address) (contracts/amm/TempleUniswapV2Pair.sol#173-178)\n\t- TempleUniswapV2Pair.sync() (contracts/amm/TempleUniswapV2Pair.sol#181-183)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- reserve1 = uint112(balance1) (contracts/amm/TempleUniswapV2Pair.sol#90)\n\tTempleUniswapV2Pair.reserve1 (contracts/amm/TempleUniswapV2Pair.sol#24) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- TempleUniswapV2Pair.skim(address) (contracts/amm/TempleUniswapV2Pair.sol#173-178)\n\t- TempleUniswapV2Pair.sync() (contracts/amm/TempleUniswapV2Pair.sol#181-183)\n", + "markdown": "Reentrancy in [TempleUniswapV2Pair.burn(address)](contracts/amm/TempleUniswapV2Pair.sol#L118-L138):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0)](contracts/amm/TempleUniswapV2Pair.sol#L131)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1)](contracts/amm/TempleUniswapV2Pair.sol#L132)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\tState variables written after the call(s):\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [blockTimestampLast = blockTimestamp](contracts/amm/TempleUniswapV2Pair.sol#L91)\n\t[TempleUniswapV2Pair.blockTimestampLast](contracts/amm/TempleUniswapV2Pair.sol#L25) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [reserve0 = uint112(balance0)](contracts/amm/TempleUniswapV2Pair.sol#L89)\n\t[TempleUniswapV2Pair.reserve0](contracts/amm/TempleUniswapV2Pair.sol#L23) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [TempleUniswapV2Pair.skim(address)](contracts/amm/TempleUniswapV2Pair.sol#L173-L178)\n\t- [TempleUniswapV2Pair.sync()](contracts/amm/TempleUniswapV2Pair.sol#L181-L183)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [reserve1 = uint112(balance1)](contracts/amm/TempleUniswapV2Pair.sol#L90)\n\t[TempleUniswapV2Pair.reserve1](contracts/amm/TempleUniswapV2Pair.sol#L24) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [TempleUniswapV2Pair.skim(address)](contracts/amm/TempleUniswapV2Pair.sol#L173-L178)\n\t- [TempleUniswapV2Pair.sync()](contracts/amm/TempleUniswapV2Pair.sol#L181-L183)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L118-L138", + "id": "0379a89cc8645c2b5e10653eb1e7b3fe6480ded71ea4fc2c34965051d126019a", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token0,to,amount0Out)", + "source_mapping": { + "start": 7388, + "length": 38, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 153 + ], + "starting_column": 29, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token1,to,amount1Out)", + "source_mapping": { + "start": 7490, + "length": 38, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 154 + ], + "starting_column": 29, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)", + "source_mapping": { + "start": 7593, + "length": 76, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 155 + ], + "starting_column": 30, + "ending_column": 106 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 8457, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 168 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "blockTimestampLast" + } + }, + { + "type": "node", + "name": "blockTimestampLast = blockTimestamp", + "source_mapping": { + "start": 3873, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "blockTimestampLast" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 8457, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 168 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "reserve0" + } + }, + { + "type": "node", + "name": "reserve0 = uint112(balance0)", + "source_mapping": { + "start": 3797, + "length": 28, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 89 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "reserve0" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 8457, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 168 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "reserve1" + } + }, + { + "type": "node", + "name": "reserve1 = uint112(balance1)", + "source_mapping": { + "start": 3835, + "length": 28, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 90 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "reserve1" + } } - } - } - } - ], - "description": "TempleUniswapV2Pair.constructor(address,address,address)._owner (contracts/amm/TempleUniswapV2Pair.sol#67) lacks a zero-check on :\n\t\t- owner = _owner (contracts/amm/TempleUniswapV2Pair.sol#68)\n", - "markdown": "[TempleUniswapV2Pair.constructor(address,address,address)._owner](contracts/amm/TempleUniswapV2Pair.sol#L67) lacks a zero-check on :\n\t\t- [owner = _owner](contracts/amm/TempleUniswapV2Pair.sol#L68)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L67", - "id": "957fa8fd60f70987f3ddecb1cc94bcc42a04d5732b7d1fd612e14be458618171", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_token0", - "source_mapping": { - "start": 2681, - "length": 15, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [67], - "starting_column": 33, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 2653, - "length": 152, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [67, 68, 69, 70, 71], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address)" + ], + "description": "Reentrancy in TempleUniswapV2Pair.swap(uint256,uint256,address,bytes) (contracts/amm/TempleUniswapV2Pair.sol#141-170):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0Out) (contracts/amm/TempleUniswapV2Pair.sol#153)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1Out) (contracts/amm/TempleUniswapV2Pair.sol#154)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data) (contracts/amm/TempleUniswapV2Pair.sol#155)\n\tState variables written after the call(s):\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- blockTimestampLast = blockTimestamp (contracts/amm/TempleUniswapV2Pair.sol#91)\n\tTempleUniswapV2Pair.blockTimestampLast (contracts/amm/TempleUniswapV2Pair.sol#25) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- reserve0 = uint112(balance0) (contracts/amm/TempleUniswapV2Pair.sol#89)\n\tTempleUniswapV2Pair.reserve0 (contracts/amm/TempleUniswapV2Pair.sol#23) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- TempleUniswapV2Pair.skim(address) (contracts/amm/TempleUniswapV2Pair.sol#173-178)\n\t- TempleUniswapV2Pair.sync() (contracts/amm/TempleUniswapV2Pair.sol#181-183)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- reserve1 = uint112(balance1) (contracts/amm/TempleUniswapV2Pair.sol#90)\n\tTempleUniswapV2Pair.reserve1 (contracts/amm/TempleUniswapV2Pair.sol#24) can be used in cross function reentrancies:\n\t- TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93)\n\t- TempleUniswapV2Pair.getReserves() (contracts/amm/TempleUniswapV2Pair.sol#43-47)\n\t- TempleUniswapV2Pair.skim(address) (contracts/amm/TempleUniswapV2Pair.sol#173-178)\n\t- TempleUniswapV2Pair.sync() (contracts/amm/TempleUniswapV2Pair.sol#181-183)\n", + "markdown": "Reentrancy in [TempleUniswapV2Pair.swap(uint256,uint256,address,bytes)](contracts/amm/TempleUniswapV2Pair.sol#L141-L170):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0Out)](contracts/amm/TempleUniswapV2Pair.sol#L153)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1Out)](contracts/amm/TempleUniswapV2Pair.sol#L154)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)](contracts/amm/TempleUniswapV2Pair.sol#L155)\n\tState variables written after the call(s):\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [blockTimestampLast = blockTimestamp](contracts/amm/TempleUniswapV2Pair.sol#L91)\n\t[TempleUniswapV2Pair.blockTimestampLast](contracts/amm/TempleUniswapV2Pair.sol#L25) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [reserve0 = uint112(balance0)](contracts/amm/TempleUniswapV2Pair.sol#L89)\n\t[TempleUniswapV2Pair.reserve0](contracts/amm/TempleUniswapV2Pair.sol#L23) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [TempleUniswapV2Pair.skim(address)](contracts/amm/TempleUniswapV2Pair.sol#L173-L178)\n\t- [TempleUniswapV2Pair.sync()](contracts/amm/TempleUniswapV2Pair.sol#L181-L183)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [reserve1 = uint112(balance1)](contracts/amm/TempleUniswapV2Pair.sol#L90)\n\t[TempleUniswapV2Pair.reserve1](contracts/amm/TempleUniswapV2Pair.sol#L24) can be used in cross function reentrancies:\n\t- [TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93)\n\t- [TempleUniswapV2Pair.getReserves()](contracts/amm/TempleUniswapV2Pair.sol#L43-L47)\n\t- [TempleUniswapV2Pair.skim(address)](contracts/amm/TempleUniswapV2Pair.sol#L173-L178)\n\t- [TempleUniswapV2Pair.sync()](contracts/amm/TempleUniswapV2Pair.sol#L181-L183)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L141-L170", + "id": "5cdaaff3e567de31630793ad7f06e2a605da21349f80f6007c70ec2bd319fbc0", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_burnDToken", + "source_mapping": { + "start": 29999, + "length": 1179, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + }, + { + "type": "node", + "name": "_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)", + "source_mapping": { + "start": 30398, + "length": 71, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 688 + ], + "starting_column": 9, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_burnDToken", + "source_mapping": { + "start": 29999, + "length": 1179, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_tokenCredits[token] = _creditBalance", + "source_mapping": { + "start": 31023, + "length": 37, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 705 + ], + "starting_column": 13, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_burnDToken", + "source_mapping": { + "start": 29999, + "length": 1179, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "strategyTokenCredits" + } } - } - } - }, - { - "type": "node", - "name": "token0 = _token0", - "source_mapping": { - "start": 2756, - "length": 16, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [69], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 2653, - "length": 152, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [67, 68, 69, 70, 71], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address)" + ], + "description": "Reentrancy in TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#677-709):\n\tExternal calls:\n\t- _burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount) (contracts/v2/TreasuryReservesVault.sol#688)\n\tState variables written after the call(s):\n\t- _tokenCredits[token] = _creditBalance (contracts/v2/TreasuryReservesVault.sol#705)\n\tTreasuryReservesVault.strategyTokenCredits (contracts/v2/TreasuryReservesVault.sol#78) can be used in cross function reentrancies:\n\t- TreasuryReservesVault._availableForStrategyToBorrow(address,ITreasuryReservesVault.StrategyConfig,IERC20,uint256) (contracts/v2/TreasuryReservesVault.sol#533-551)\n\t- TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#677-709)\n\t- TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#638-670)\n\t- TreasuryReservesVault.setStrategyDebtCeiling(address,IERC20,uint256) (contracts/v2/TreasuryReservesVault.sol#242-255)\n\t- TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319)\n\t- TreasuryReservesVault.strategyBalanceSheet(address) (contracts/v2/TreasuryReservesVault.sol#447-467)\n\t- TreasuryReservesVault.strategyTokenCredits (contracts/v2/TreasuryReservesVault.sol#78)\n", + "markdown": "Reentrancy in [TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L677-L709):\n\tExternal calls:\n\t- [_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)](contracts/v2/TreasuryReservesVault.sol#L688)\n\tState variables written after the call(s):\n\t- [_tokenCredits[token] = _creditBalance](contracts/v2/TreasuryReservesVault.sol#L705)\n\t[TreasuryReservesVault.strategyTokenCredits](contracts/v2/TreasuryReservesVault.sol#L78) can be used in cross function reentrancies:\n\t- [TreasuryReservesVault._availableForStrategyToBorrow(address,ITreasuryReservesVault.StrategyConfig,IERC20,uint256)](contracts/v2/TreasuryReservesVault.sol#L533-L551)\n\t- [TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L677-L709)\n\t- [TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L638-L670)\n\t- [TreasuryReservesVault.setStrategyDebtCeiling(address,IERC20,uint256)](contracts/v2/TreasuryReservesVault.sol#L242-L255)\n\t- [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319)\n\t- [TreasuryReservesVault.strategyBalanceSheet(address)](contracts/v2/TreasuryReservesVault.sol#L447-L467)\n\t- [TreasuryReservesVault.strategyTokenCredits](contracts/v2/TreasuryReservesVault.sol#L78)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L677-L709", + "id": "c8932bc3a4a8bcb7213dd16df3325de16b2cfe251691839c0d5db322cdde8cc6", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_mintDToken", + "source_mapping": { + "start": 28533, + "length": 1205, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + }, + { + "type": "node", + "name": "tokenConfig.dToken.mint(strategy,_newDebt)", + "source_mapping": { + "start": 29294, + "length": 43, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 657 + ], + "starting_column": 13, + "ending_column": 56 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_mintDToken", + "source_mapping": { + "start": 28533, + "length": 1205, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_tokenCredits[token] = _creditBalance = 0", + "source_mapping": { + "start": 29387, + "length": 41, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 660 + ], + "starting_column": 13, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_mintDToken", + "source_mapping": { + "start": 28533, + "length": 1205, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "strategyTokenCredits" + } } - } - } - } - ], - "description": "TempleUniswapV2Pair.constructor(address,address,address)._token0 (contracts/amm/TempleUniswapV2Pair.sol#67) lacks a zero-check on :\n\t\t- token0 = _token0 (contracts/amm/TempleUniswapV2Pair.sol#69)\n", - "markdown": "[TempleUniswapV2Pair.constructor(address,address,address)._token0](contracts/amm/TempleUniswapV2Pair.sol#L67) lacks a zero-check on :\n\t\t- [token0 = _token0](contracts/amm/TempleUniswapV2Pair.sol#L69)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L67", - "id": "89b68064543393a53cb614749cb260c4fb872797867021adbebf53b5a0362b2f", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_token1", - "source_mapping": { - "start": 2698, - "length": 15, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [67], - "starting_column": 50, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 2653, - "length": 152, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [67, 68, 69, 70, 71], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address)" + ], + "description": "Reentrancy in TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#638-670):\n\tExternal calls:\n\t- tokenConfig.dToken.mint(strategy,_newDebt) (contracts/v2/TreasuryReservesVault.sol#657)\n\tState variables written after the call(s):\n\t- _tokenCredits[token] = _creditBalance = 0 (contracts/v2/TreasuryReservesVault.sol#660)\n\tTreasuryReservesVault.strategyTokenCredits (contracts/v2/TreasuryReservesVault.sol#78) can be used in cross function reentrancies:\n\t- TreasuryReservesVault._availableForStrategyToBorrow(address,ITreasuryReservesVault.StrategyConfig,IERC20,uint256) (contracts/v2/TreasuryReservesVault.sol#533-551)\n\t- TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#677-709)\n\t- TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#638-670)\n\t- TreasuryReservesVault.setStrategyDebtCeiling(address,IERC20,uint256) (contracts/v2/TreasuryReservesVault.sol#242-255)\n\t- TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319)\n\t- TreasuryReservesVault.strategyBalanceSheet(address) (contracts/v2/TreasuryReservesVault.sol#447-467)\n\t- TreasuryReservesVault.strategyTokenCredits (contracts/v2/TreasuryReservesVault.sol#78)\n", + "markdown": "Reentrancy in [TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L638-L670):\n\tExternal calls:\n\t- [tokenConfig.dToken.mint(strategy,_newDebt)](contracts/v2/TreasuryReservesVault.sol#L657)\n\tState variables written after the call(s):\n\t- [_tokenCredits[token] = _creditBalance = 0](contracts/v2/TreasuryReservesVault.sol#L660)\n\t[TreasuryReservesVault.strategyTokenCredits](contracts/v2/TreasuryReservesVault.sol#L78) can be used in cross function reentrancies:\n\t- [TreasuryReservesVault._availableForStrategyToBorrow(address,ITreasuryReservesVault.StrategyConfig,IERC20,uint256)](contracts/v2/TreasuryReservesVault.sol#L533-L551)\n\t- [TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L677-L709)\n\t- [TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L638-L670)\n\t- [TreasuryReservesVault.setStrategyDebtCeiling(address,IERC20,uint256)](contracts/v2/TreasuryReservesVault.sol#L242-L255)\n\t- [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319)\n\t- [TreasuryReservesVault.strategyBalanceSheet(address)](contracts/v2/TreasuryReservesVault.sol#L447-L467)\n\t- [TreasuryReservesVault.strategyTokenCredits](contracts/v2/TreasuryReservesVault.sol#L78)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L638-L670", + "id": "0ce7ad9bcbc81412efd61c0340786d494f3510ea2cdeb81edb9c0103d00c0d0c", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + }, + { + "type": "node", + "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", + "source_mapping": { + "start": 7012, + "length": 118, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 173, + 174, + 175, + 176, + 177 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_accountData.collateral = _collateral - amount", + "source_mapping": { + "start": 7229, + "length": 46, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 180 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "allAccountsData" + } } - } - } - }, - { - "type": "node", - "name": "token1 = _token1", - "source_mapping": { - "start": 2782, - "length": 16, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [70], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 2653, - "length": 152, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [67, 68, 69, 70, 71], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address)" + ], + "description": "Reentrancy in TempleLineOfCredit.removeCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#166-190):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#173-177)\n\tState variables written after the call(s):\n\t- _accountData.collateral = _collateral - amount (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#180)\n\tTempleLineOfCredit.allAccountsData (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#68) can be used in cross function reentrancies:\n\t- TempleLineOfCredit.accountData(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#540-546)\n\t- TempleLineOfCredit.accountPosition(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#484-503)\n\t- TempleLineOfCredit.addCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#145-159)\n\t- TempleLineOfCredit.batchLiquidate(address[]) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#318-359)\n\t- TempleLineOfCredit.borrow(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#205-242)\n\t- TempleLineOfCredit.computeLiquidity(address[]) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#523-535)\n\t- TempleLineOfCredit.removeCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#166-190)\n\t- TempleLineOfCredit.repay(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#253-280)\n\t- TempleLineOfCredit.repayAll(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#287-305)\n", + "markdown": "Reentrancy in [TempleLineOfCredit.removeCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L173-L177)\n\tState variables written after the call(s):\n\t- [_accountData.collateral = _collateral - amount](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L180)\n\t[TempleLineOfCredit.allAccountsData](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L68) can be used in cross function reentrancies:\n\t- [TempleLineOfCredit.accountData(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L540-L546)\n\t- [TempleLineOfCredit.accountPosition(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L484-L503)\n\t- [TempleLineOfCredit.addCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L145-L159)\n\t- [TempleLineOfCredit.batchLiquidate(address[])](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318-L359)\n\t- [TempleLineOfCredit.borrow(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L205-L242)\n\t- [TempleLineOfCredit.computeLiquidity(address[])](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L523-L535)\n\t- [TempleLineOfCredit.removeCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190)\n\t- [TempleLineOfCredit.repay(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L253-L280)\n\t- [TempleLineOfCredit.repayAll(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L287-L305)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190", + "id": "dffbe20bcc1c2f91394c175a10bd84f3964c2b4101e0079bbddcef08bf456d02", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 875, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + }, + { + "type": "node", + "name": "daiToken.safeApprove(previousTrv,0)", + "source_mapping": { + "start": 16002, + "length": 36, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 394 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 875, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "treasuryReservesVault = ITreasuryReservesVault(_trv)", + "source_mapping": { + "start": 16128, + "length": 52, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 398 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 875, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "treasuryReservesVault" + } } - } - } - } - ], - "description": "TempleUniswapV2Pair.constructor(address,address,address)._token1 (contracts/amm/TempleUniswapV2Pair.sol#67) lacks a zero-check on :\n\t\t- token1 = _token1 (contracts/amm/TempleUniswapV2Pair.sol#70)\n", - "markdown": "[TempleUniswapV2Pair.constructor(address,address,address)._token1](contracts/amm/TempleUniswapV2Pair.sol#L67) lacks a zero-check on :\n\t\t- [token1 = _token1](contracts/amm/TempleUniswapV2Pair.sol#L70)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L67", - "id": "690db18543951330bfe14086929ed1a80aa7c5c43d413a52b921411451479889", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_router", - "source_mapping": { - "start": 2904, - "length": 15, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [74], - "starting_column": 24, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setRouter", - "source_mapping": { - "start": 2885, - "length": 140, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setRouter(address)" + ], + "description": "Reentrancy in TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410):\n\tExternal calls:\n\t- daiToken.safeApprove(previousTrv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#394)\n\tState variables written after the call(s):\n\t- treasuryReservesVault = ITreasuryReservesVault(_trv) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#398)\n\tTempleLineOfCredit.treasuryReservesVault (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#53) can be used in cross function reentrancies:\n\t- TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#619-658)\n\t- TempleLineOfCredit._repayToken(TempleLineOfCredit.DebtTokenCache,uint128,address,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#705-721)\n\t- TempleLineOfCredit.batchLiquidate(address[]) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#318-359)\n\t- TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410)\n\t- TempleLineOfCredit.treasuryReservesVault (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#53)\n", + "markdown": "Reentrancy in [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410):\n\tExternal calls:\n\t- [daiToken.safeApprove(previousTrv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)\n\tState variables written after the call(s):\n\t- [treasuryReservesVault = ITreasuryReservesVault(_trv)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L398)\n\t[TempleLineOfCredit.treasuryReservesVault](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L53) can be used in cross function reentrancies:\n\t- [TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L619-L658)\n\t- [TempleLineOfCredit._repayToken(TempleLineOfCredit.DebtTokenCache,uint128,address,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L705-L721)\n\t- [TempleLineOfCredit.batchLiquidate(address[])](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318-L359)\n\t- [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410)\n\t- [TempleLineOfCredit.treasuryReservesVault](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L53)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410", + "id": "45124547e30483595bf298aa091c92ce13c079404c993c2c8406499fd02de4c8", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7963, + "length": 749, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + }, + { + "type": "node", + "name": "protocolToken.safeApprove(previousVault,0)", + "source_mapping": { + "start": 8231, + "length": 43, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 195 + ], + "starting_column": 13, + "ending_column": 56 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7963, + "length": 749, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeApprove(previousVault,0)", + "source_mapping": { + "start": 8288, + "length": 40, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 196 + ], + "starting_column": 13, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7963, + "length": 749, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "tokenVault = IRamosTokenVault(vault)", + "source_mapping": { + "start": 8349, + "length": 36, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 199 + ], + "starting_column": 9, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTokenVault", + "source_mapping": { + "start": 7963, + "length": 749, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTokenVault(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "tokenVault" + } } - } - } - }, - { - "type": "node", - "name": "router = _router", - "source_mapping": { - "start": 3002, - "length": 16, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [76], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setRouter", - "source_mapping": { - "start": 2885, - "length": 140, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setRouter(address)" + ], + "description": "Reentrancy in Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209):\n\tExternal calls:\n\t- protocolToken.safeApprove(previousVault,0) (contracts/amo/Ramos.sol#195)\n\t- quoteToken.safeApprove(previousVault,0) (contracts/amo/Ramos.sol#196)\n\tState variables written after the call(s):\n\t- tokenVault = IRamosTokenVault(vault) (contracts/amo/Ramos.sol#199)\n\tRamos.tokenVault (contracts/amo/Ramos.sol#78) can be used in cross function reentrancies:\n\t- Ramos.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/amo/Ramos.sol#464-513)\n\t- Ramos.rebalanceDownExit(uint256,uint256) (contracts/amo/Ramos.sol#334-364)\n\t- Ramos.rebalanceDownJoin(uint256,uint256) (contracts/amo/Ramos.sol#421-455)\n\t- Ramos.rebalanceUpExit(uint256,uint256) (contracts/amo/Ramos.sol#290-322)\n\t- Ramos.rebalanceUpJoin(uint256,uint256) (contracts/amo/Ramos.sol#376-409)\n\t- Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256) (contracts/amo/Ramos.sol#522-559)\n\t- Ramos.setTokenVault(address) (contracts/amo/Ramos.sol#189-209)\n\t- Ramos.tokenVault (contracts/amo/Ramos.sol#78)\n", + "markdown": "Reentrancy in [Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209):\n\tExternal calls:\n\t- [protocolToken.safeApprove(previousVault,0)](contracts/amo/Ramos.sol#L195)\n\t- [quoteToken.safeApprove(previousVault,0)](contracts/amo/Ramos.sol#L196)\n\tState variables written after the call(s):\n\t- [tokenVault = IRamosTokenVault(vault)](contracts/amo/Ramos.sol#L199)\n\t[Ramos.tokenVault](contracts/amo/Ramos.sol#L78) can be used in cross function reentrancies:\n\t- [Ramos.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/amo/Ramos.sol#L464-L513)\n\t- [Ramos.rebalanceDownExit(uint256,uint256)](contracts/amo/Ramos.sol#L334-L364)\n\t- [Ramos.rebalanceDownJoin(uint256,uint256)](contracts/amo/Ramos.sol#L421-L455)\n\t- [Ramos.rebalanceUpExit(uint256,uint256)](contracts/amo/Ramos.sol#L290-L322)\n\t- [Ramos.rebalanceUpJoin(uint256,uint256)](contracts/amo/Ramos.sol#L376-L409)\n\t- [Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)](contracts/amo/Ramos.sol#L522-L559)\n\t- [Ramos.setTokenVault(address)](contracts/amo/Ramos.sol#L189-L209)\n\t- [Ramos.tokenVault](contracts/amo/Ramos.sol#L78)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L189-L209", + "id": "51c39733accdc5dde8af1e99214d3003e0a2be1fffb777f3eb06a7fc56a19db1", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + }, + { + "type": "node", + "name": "_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)", + "source_mapping": { + "start": 12499, + "length": 64, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 296 + ], + "starting_column": 13, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "delete strategies[strategy]", + "source_mapping": { + "start": 13381, + "length": 27, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 317 + ], + "starting_column": 9, + "ending_column": 36 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "strategies" + } } - } - } - } - ], - "description": "TempleUniswapV2Pair.setRouter(address)._router (contracts/amm/TempleUniswapV2Pair.sol#74) lacks a zero-check on :\n\t\t- router = _router (contracts/amm/TempleUniswapV2Pair.sol#76)\n", - "markdown": "[TempleUniswapV2Pair.setRouter(address)._router](contracts/amm/TempleUniswapV2Pair.sol#L74) lacks a zero-check on :\n\t\t- [router = _router](contracts/amm/TempleUniswapV2Pair.sol#L76)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L74", - "id": "65b7f26867d221829e7395a702a30581f77ebb909c900aa9dc269f7dd15923d0", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_recipient", - "source_mapping": { - "start": 1683, - "length": 18, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [48], - "starting_column": 34, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setRewardsRecipient", - "source_mapping": { - "start": 1654, - "length": 179, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [48, 49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setRewardsRecipient(address)" + ], + "description": "Reentrancy in TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319):\n\tExternal calls:\n\t- _outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy) (contracts/v2/TreasuryReservesVault.sol#296)\n\tState variables written after the call(s):\n\t- delete strategies[strategy] (contracts/v2/TreasuryReservesVault.sol#317)\n\tTreasuryReservesVault.strategies (contracts/v2/TreasuryReservesVault.sol#55) can be used in cross function reentrancies:\n\t- TreasuryReservesVault._getStrategyConfig(address) (contracts/v2/TreasuryReservesVault.sol#711-714)\n\t- TreasuryReservesVault._withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256) (contracts/v2/TreasuryReservesVault.sol#582-632)\n\t- TreasuryReservesVault.addStrategy(address,int256,ITempleStrategy.AssetBalance[]) (contracts/v2/TreasuryReservesVault.sol#173-201)\n\t- TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319)\n\t- TreasuryReservesVault.strategies (contracts/v2/TreasuryReservesVault.sol#55)\n", + "markdown": "Reentrancy in [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319):\n\tExternal calls:\n\t- [_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)](contracts/v2/TreasuryReservesVault.sol#L296)\n\tState variables written after the call(s):\n\t- [delete strategies[strategy]](contracts/v2/TreasuryReservesVault.sol#L317)\n\t[TreasuryReservesVault.strategies](contracts/v2/TreasuryReservesVault.sol#L55) can be used in cross function reentrancies:\n\t- [TreasuryReservesVault._getStrategyConfig(address)](contracts/v2/TreasuryReservesVault.sol#L711-L714)\n\t- [TreasuryReservesVault._withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)](contracts/v2/TreasuryReservesVault.sol#L582-L632)\n\t- [TreasuryReservesVault.addStrategy(address,int256,ITempleStrategy.AssetBalance[])](contracts/v2/TreasuryReservesVault.sol#L173-L201)\n\t- [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319)\n\t- [TreasuryReservesVault.strategies](contracts/v2/TreasuryReservesVault.sol#L55)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L283-L319", + "id": "29da7db88824f300cbfeae877c2e6c080f8344d5012c1ba25820228cb3feb89a", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + }, + { + "type": "node", + "name": "claimFor(account)", + "source_mapping": { + "start": 2441, + "length": 17, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 70 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3194, + "length": 56, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "claimedByScaled[account] -= amount * lifetimeAccRevenueScaledByShare", + "source_mapping": { + "start": 2535, + "length": 68, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 74 + ], + "starting_column": 9, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "claimedByScaled" + } + }, + { + "type": "node", + "name": "shares[account] -= amount", + "source_mapping": { + "start": 2469, + "length": 25, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 72 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "shares" + } } - } - } - }, - { - "type": "node", - "name": "rewardsRecipient = _recipient", - "source_mapping": { - "start": 1750, - "length": 29, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [49], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setRewardsRecipient", - "source_mapping": { - "start": 1654, - "length": 179, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [48, 49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setRewardsRecipient(address)" + ], + "description": "Reentrancy in TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#70)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tState variables written after the call(s):\n\t- claimedByScaled[account] -= amount * lifetimeAccRevenueScaledByShare (contracts/core/TreasuryFarmingRevenue.sol#74)\n\tTreasuryFarmingRevenue.claimedByScaled (contracts/core/TreasuryFarmingRevenue.sol#30) can be used in cross function reentrancies:\n\t- TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93)\n\t- TreasuryFarmingRevenue.claimedByScaled (contracts/core/TreasuryFarmingRevenue.sol#30)\n\t- TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77)\n\t- TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64)\n\t- shares[account] -= amount (contracts/core/TreasuryFarmingRevenue.sol#72)\n\tTreasuryFarmingRevenue.shares (contracts/core/TreasuryFarmingRevenue.sol#24) can be used in cross function reentrancies:\n\t- TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93)\n\t- TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77)\n\t- TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64)\n\t- TreasuryFarmingRevenue.shares (contracts/core/TreasuryFarmingRevenue.sol#24)\n", + "markdown": "Reentrancy in [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L70)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tState variables written after the call(s):\n\t- [claimedByScaled[account] -= amount * lifetimeAccRevenueScaledByShare](contracts/core/TreasuryFarmingRevenue.sol#L74)\n\t[TreasuryFarmingRevenue.claimedByScaled](contracts/core/TreasuryFarmingRevenue.sol#L30) can be used in cross function reentrancies:\n\t- [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93)\n\t- [TreasuryFarmingRevenue.claimedByScaled](contracts/core/TreasuryFarmingRevenue.sol#L30)\n\t- [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77)\n\t- [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64)\n\t- [shares[account] -= amount](contracts/core/TreasuryFarmingRevenue.sol#L72)\n\t[TreasuryFarmingRevenue.shares](contracts/core/TreasuryFarmingRevenue.sol#L24) can be used in cross function reentrancies:\n\t- [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93)\n\t- [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77)\n\t- [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64)\n\t- [TreasuryFarmingRevenue.shares](contracts/core/TreasuryFarmingRevenue.sol#L24)\n", + "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L69-L77", + "id": "cc45c8f5d22793c2ba894c4d32e4043890c1184c0a94e5502d25b97876a95c86", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + }, + { + "type": "node", + "name": "paymentContract.initialize(_token)", + "source_mapping": { + "start": 3274, + "length": 34, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 89 + ], + "starting_column": 9, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "paymentContract.setAllocations(_dests,_allocations)", + "source_mapping": { + "start": 3318, + "length": 52, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 90 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "paymentContract.transferOwnership(msg.sender)", + "source_mapping": { + "start": 3381, + "length": 45, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 92 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)", + "source_mapping": { + "start": 3473, + "length": 165, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "incrementEpoch(address(paymentContract),_totalFunding)", + "source_mapping": { + "start": 3649, + "length": 55, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 102 + ], + "starting_column": 9, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "lastPaidEpoch" + } + }, + { + "type": "node", + "name": "data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++})", + "source_mapping": { + "start": 1542, + "length": 182, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 9, + "ending_column": 11 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "incrementEpoch", + "source_mapping": { + "start": 1428, + "length": 347, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "incrementEpoch(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "lastPaidEpoch" + } } - } - } - } - ], - "description": "AuraStaking.setRewardsRecipient(address)._recipient (contracts/amo/AuraStaking.sol#48) lacks a zero-check on :\n\t\t- rewardsRecipient = _recipient (contracts/amo/AuraStaking.sol#49)\n", - "markdown": "[AuraStaking.setRewardsRecipient(address)._recipient](contracts/amo/AuraStaking.sol#L48) lacks a zero-check on :\n\t\t- [rewardsRecipient = _recipient](contracts/amo/AuraStaking.sol#L49)\n", - "first_markdown_element": "contracts/amo/AuraStaking.sol#L48", - "id": "5563fec2719988c18a09b1c9b98748a0700c5a09c84dd2f6ec51e7b0796b0c80", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_feeCollector", - "source_mapping": { - "start": 4831, - "length": 21, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [113], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 4519, - "length": 995, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address,address,address,address,address,uint64,bytes32,address,uint256)" + ], + "description": "Reentrancy in TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#79-112):\n\tExternal calls:\n\t- paymentContract.initialize(_token) (contracts/admin/TempleTeamPaymentsFactory.sol#89)\n\t- paymentContract.setAllocations(_dests,_allocations) (contracts/admin/TempleTeamPaymentsFactory.sol#90)\n\t- paymentContract.transferOwnership(msg.sender) (contracts/admin/TempleTeamPaymentsFactory.sol#92)\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#95-100)\n\tState variables written after the call(s):\n\t- incrementEpoch(address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#102)\n\t\t- data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++}) (contracts/admin/TempleTeamPaymentsFactory.sol#50-54)\n\tTempleTeamPaymentsFactory.lastPaidEpoch (contracts/admin/TempleTeamPaymentsFactory.sol#23) can be used in cross function reentrancies:\n\t- TempleTeamPaymentsFactory.constructor(address,uint16) (contracts/admin/TempleTeamPaymentsFactory.sol#40-44)\n\t- TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#79-112)\n\t- TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[]) (contracts/admin/TempleTeamPaymentsFactory.sol#119-143)\n\t- TempleTeamPaymentsFactory.incrementEpoch(address,uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#46-56)\n\t- TempleTeamPaymentsFactory.lastPaidEpoch (contracts/admin/TempleTeamPaymentsFactory.sol#23)\n", + "markdown": "Reentrancy in [TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112):\n\tExternal calls:\n\t- [paymentContract.initialize(_token)](contracts/admin/TempleTeamPaymentsFactory.sol#L89)\n\t- [paymentContract.setAllocations(_dests,_allocations)](contracts/admin/TempleTeamPaymentsFactory.sol#L90)\n\t- [paymentContract.transferOwnership(msg.sender)](contracts/admin/TempleTeamPaymentsFactory.sol#L92)\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L95-L100)\n\tState variables written after the call(s):\n\t- [incrementEpoch(address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L102)\n\t\t- [data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++})](contracts/admin/TempleTeamPaymentsFactory.sol#L50-L54)\n\t[TempleTeamPaymentsFactory.lastPaidEpoch](contracts/admin/TempleTeamPaymentsFactory.sol#L23) can be used in cross function reentrancies:\n\t- [TempleTeamPaymentsFactory.constructor(address,uint16)](contracts/admin/TempleTeamPaymentsFactory.sol#L40-L44)\n\t- [TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112)\n\t- [TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[])](contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143)\n\t- [TempleTeamPaymentsFactory.incrementEpoch(address,uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L46-L56)\n\t- [TempleTeamPaymentsFactory.lastPaidEpoch](contracts/admin/TempleTeamPaymentsFactory.sol#L23)\n", + "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112", + "id": "1239a22bea2c9a42dbde3ae4ac80f8aa9a378a084fd732a81c3169ae01c87319", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + }, + { + "type": "node", + "name": "claimFor(account)", + "source_mapping": { + "start": 2073, + "length": 17, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 57 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3194, + "length": 56, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "claimedByScaled[account] += amount * lifetimeAccRevenueScaledByShare", + "source_mapping": { + "start": 2167, + "length": 68, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 61 + ], + "starting_column": 9, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "claimedByScaled" + } + }, + { + "type": "node", + "name": "shares[account] += amount", + "source_mapping": { + "start": 2101, + "length": 25, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 59 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "shares" + } } - } - } - }, - { - "type": "node", - "name": "feeCollector = _feeCollector", - "source_mapping": { - "start": 5312, - "length": 28, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [123], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 4519, - "length": 995, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address,address,address,address,address,uint64,bytes32,address,uint256)" + ], + "description": "Reentrancy in TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#57)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tState variables written after the call(s):\n\t- claimedByScaled[account] += amount * lifetimeAccRevenueScaledByShare (contracts/core/TreasuryFarmingRevenue.sol#61)\n\tTreasuryFarmingRevenue.claimedByScaled (contracts/core/TreasuryFarmingRevenue.sol#30) can be used in cross function reentrancies:\n\t- TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93)\n\t- TreasuryFarmingRevenue.claimedByScaled (contracts/core/TreasuryFarmingRevenue.sol#30)\n\t- TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77)\n\t- TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64)\n\t- shares[account] += amount (contracts/core/TreasuryFarmingRevenue.sol#59)\n\tTreasuryFarmingRevenue.shares (contracts/core/TreasuryFarmingRevenue.sol#24) can be used in cross function reentrancies:\n\t- TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93)\n\t- TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77)\n\t- TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64)\n\t- TreasuryFarmingRevenue.shares (contracts/core/TreasuryFarmingRevenue.sol#24)\n", + "markdown": "Reentrancy in [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L57)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tState variables written after the call(s):\n\t- [claimedByScaled[account] += amount * lifetimeAccRevenueScaledByShare](contracts/core/TreasuryFarmingRevenue.sol#L61)\n\t[TreasuryFarmingRevenue.claimedByScaled](contracts/core/TreasuryFarmingRevenue.sol#L30) can be used in cross function reentrancies:\n\t- [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93)\n\t- [TreasuryFarmingRevenue.claimedByScaled](contracts/core/TreasuryFarmingRevenue.sol#L30)\n\t- [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77)\n\t- [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64)\n\t- [shares[account] += amount](contracts/core/TreasuryFarmingRevenue.sol#L59)\n\t[TreasuryFarmingRevenue.shares](contracts/core/TreasuryFarmingRevenue.sol#L24) can be used in cross function reentrancies:\n\t- [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93)\n\t- [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77)\n\t- [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64)\n\t- [TreasuryFarmingRevenue.shares](contracts/core/TreasuryFarmingRevenue.sol#L24)\n", + "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L56-L64", + "id": "7136d46cea8f0cb4f10b428d075c61a8ad801ba9ca1ef8c90733aaa52034f6ed", + "check": "reentrancy-no-eth", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "i", + "source_mapping": { + "start": 8364, + "length": 9, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 213 + ], + "starting_column": 9, + "ending_column": 18 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateStrategyEnabledBorrowTokens", + "source_mapping": { + "start": 8067, + "length": 898, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "updateStrategyEnabledBorrowTokens(address,IERC20[],IERC20[])" + } + } + } } - } - } - } - ], - "description": "Ramos.constructor(address,address,address,address,address,address,address,uint64,bytes32,address,uint256)._feeCollector (contracts/amo/Ramos.sol#113) lacks a zero-check on :\n\t\t- feeCollector = _feeCollector (contracts/amo/Ramos.sol#123)\n", - "markdown": "[Ramos.constructor(address,address,address,address,address,address,address,uint64,bytes32,address,uint256)._feeCollector](contracts/amo/Ramos.sol#L113) lacks a zero-check on :\n\t\t- [feeCollector = _feeCollector](contracts/amo/Ramos.sol#L123)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L113", - "id": "d859e385f8bd8eca35f31a74169347836938cb1a82d4c8321f358ad5363d6ed4", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_amo", - "source_mapping": { - "start": 1614, - "length": 12, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [41], - "starting_column": 7, - "ending_column": 19 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1451, - "length": 622, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerPoolHelper", - "source_mapping": { - "start": 739, - "length": 19014, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address,address,address,address,uint64,bytes32)" + ], + "description": "TreasuryReservesVault.updateStrategyEnabledBorrowTokens(address,IERC20[],IERC20[]).i (contracts/v2/TreasuryReservesVault.sol#213) is a local variable never initialized\n", + "markdown": "[TreasuryReservesVault.updateStrategyEnabledBorrowTokens(address,IERC20[],IERC20[]).i](contracts/v2/TreasuryReservesVault.sol#L213) is a local variable never initialized\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L213", + "id": "ccb61a70ed00f67ef5318dfebba8dd5906b02a2b7022418f095ca6131f2e87a0", + "check": "uninitialized-local", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "shutdownParams", + "source_mapping": { + "start": 9302, + "length": 36, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 238 + ], + "starting_column": 9, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "populateShutdownData", + "source_mapping": { + "start": 9022, + "length": 564, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "populateShutdownData(bytes)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "amo = _amo", - "source_mapping": { - "start": 1988, - "length": 10, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [51], - "starting_column": 7, - "ending_column": 17 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1451, - "length": 622, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "BalancerPoolHelper", - "source_mapping": { - "start": 739, - "length": 19014, - "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", - "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,address,address,address,address,uint64,bytes32)" + ], + "description": "RamosStrategy.populateShutdownData(bytes).shutdownParams (contracts/v2/strategies/RamosStrategy.sol#238) is a local variable never initialized\n", + "markdown": "[RamosStrategy.populateShutdownData(bytes).shutdownParams](contracts/v2/strategies/RamosStrategy.sol#L238) is a local variable never initialized\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L238", + "id": "e3b0c7352e8da48d32a58f5b6962b6132c525566519d363234f70e52d4760882", + "check": "uninitialized-local", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "baseStrategyAvailable", + "source_mapping": { + "start": 21089, + "length": 29, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 476 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "totalAvailable", + "source_mapping": { + "start": 20920, + "length": 877, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "totalAvailable(IERC20)" + } + } + } } - } - } - } - ], - "description": "BalancerPoolHelper.constructor(address,address,address,address,address,address,uint64,bytes32)._amo (contracts/amo/helpers/BalancerPoolHelper.sol#41) lacks a zero-check on :\n\t\t- amo = _amo (contracts/amo/helpers/BalancerPoolHelper.sol#51)\n", - "markdown": "[BalancerPoolHelper.constructor(address,address,address,address,address,address,uint64,bytes32)._amo](contracts/amo/helpers/BalancerPoolHelper.sol#L41) lacks a zero-check on :\n\t\t- [amo = _amo](contracts/amo/helpers/BalancerPoolHelper.sol#L51)\n", - "first_markdown_element": "contracts/amo/helpers/BalancerPoolHelper.sol#L41", - "id": "1a4d31b221d02b3c425c477d2b7e4c6dc1e41557697509c8e152170c2f1f7986", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_fundsOwner", - "source_mapping": { - "start": 3149, - "length": 19, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [72], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 3065, - "length": 1117, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [ - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OtcOffer", - "source_mapping": { - "start": 847, - "length": 6468, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [ - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(address,address,address,uint256,OtcOffer.OfferPricingToken,uint128,uint128)" + ], + "description": "TreasuryReservesVault.totalAvailable(IERC20).baseStrategyAvailable (contracts/v2/TreasuryReservesVault.sol#476) is a local variable never initialized\n", + "markdown": "[TreasuryReservesVault.totalAvailable(IERC20).baseStrategyAvailable](contracts/v2/TreasuryReservesVault.sol#L476) is a local variable never initialized\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L476", + "id": "5a877bceafff56259a481e94173f69b6c70a20fc470647802278ccdef5ab0fcd", + "check": "uninitialized-local", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "depositAndStake", + "source_mapping": { + "start": 2874, + "length": 351, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStake(uint256)" + } + }, + { + "type": "node", + "name": "booster.deposit(auraPoolInfo.pId,amount,true)", + "source_mapping": { + "start": 3161, + "length": 47, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 83 + ], + "starting_column": 13, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositAndStake", + "source_mapping": { + "start": 2874, + "length": 351, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStake(uint256)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "fundsOwner = _fundsOwner", - "source_mapping": { - "start": 3444, - "length": 24, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [80], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 3065, - "length": 1117, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [ - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OtcOffer", - "source_mapping": { - "start": 847, - "length": 6468, - "filename_relative": "contracts/core/OtcOffer.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", - "filename_short": "contracts/core/OtcOffer.sol", - "is_dependency": false, - "lines": [ - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(address,address,address,uint256,OtcOffer.OfferPricingToken,uint128,uint128)" + ], + "description": "AuraStaking.depositAndStake(uint256) (contracts/amo/AuraStaking.sol#79-85) ignores return value by booster.deposit(auraPoolInfo.pId,amount,true) (contracts/amo/AuraStaking.sol#83)\n", + "markdown": "[AuraStaking.depositAndStake(uint256)](contracts/amo/AuraStaking.sol#L79-L85) ignores return value by [booster.deposit(auraPoolInfo.pId,amount,true)](contracts/amo/AuraStaking.sol#L83)\n", + "first_markdown_element": "contracts/amo/AuraStaking.sol#L79-L85", + "id": "df1bba2db758866958a0bd3d600869193c2a4c54635aeec3c0158683eb3c6bd1", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawAndUnwrap", + "source_mapping": { + "start": 3286, + "length": 634, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndUnwrap(uint256,bool,address)" + } + }, + { + "type": "node", + "name": "IAuraBaseRewardPool(auraPoolInfo.rewards).withdrawAndUnwrap(toUnstake,claim)", + "source_mapping": { + "start": 3680, + "length": 77, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 93 + ], + "starting_column": 13, + "ending_column": 90 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndUnwrap", + "source_mapping": { + "start": 3286, + "length": 634, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndUnwrap(uint256,bool,address)" + } + } + } } - } - } - } - ], - "description": "OtcOffer.constructor(address,address,address,uint256,OtcOffer.OfferPricingToken,uint128,uint128)._fundsOwner (contracts/core/OtcOffer.sol#72) lacks a zero-check on :\n\t\t- fundsOwner = _fundsOwner (contracts/core/OtcOffer.sol#80)\n", - "markdown": "[OtcOffer.constructor(address,address,address,uint256,OtcOffer.OfferPricingToken,uint128,uint128)._fundsOwner](contracts/core/OtcOffer.sol#L72) lacks a zero-check on :\n\t\t- [fundsOwner = _fundsOwner](contracts/core/OtcOffer.sol#L80)\n", - "first_markdown_element": "contracts/core/OtcOffer.sol#L72", - "id": "318c72045beea63d39db91e2c64959d93dbfe0e966ec4e74e6cbf32f20a24e68", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_gnosisSafeWallet", - "source_mapping": { - "start": 1642, - "length": 25, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [41], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1477, - "length": 459, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,string,address,address,address)" + ], + "description": "AuraStaking.withdrawAndUnwrap(uint256,bool,address) (contracts/amo/AuraStaking.sol#88-100) ignores return value by IAuraBaseRewardPool(auraPoolInfo.rewards).withdrawAndUnwrap(toUnstake,claim) (contracts/amo/AuraStaking.sol#93)\n", + "markdown": "[AuraStaking.withdrawAndUnwrap(uint256,bool,address)](contracts/amo/AuraStaking.sol#L88-L100) ignores return value by [IAuraBaseRewardPool(auraPoolInfo.rewards).withdrawAndUnwrap(toUnstake,claim)](contracts/amo/AuraStaking.sol#L93)\n", + "first_markdown_element": "contracts/amo/AuraStaking.sol#L88-L100", + "id": "a3f11c21d94cc0286397b0f4acf966b2e7b4421bbb8026550ce5beae49adbf78", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getReward", + "source_mapping": { + "start": 4291, + "length": 657, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "getReward(bool)" + } + }, + { + "type": "node", + "name": "IAuraBaseRewardPool(auraPoolInfo.rewards).getReward(address(this),claimExtras)", + "source_mapping": { + "start": 4356, + "length": 79, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 111 + ], + "starting_column": 9, + "ending_column": 88 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getReward", + "source_mapping": { + "start": 4291, + "length": 657, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "getReward(bool)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "gnosisSafeWallet = _gnosisSafeWallet", - "source_mapping": { - "start": 1813, - "length": 36, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [44], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1477, - "length": 459, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(address,address,string,address,address,address)" + ], + "description": "AuraStaking.getReward(bool) (contracts/amo/AuraStaking.sol#110-125) ignores return value by IAuraBaseRewardPool(auraPoolInfo.rewards).getReward(address(this),claimExtras) (contracts/amo/AuraStaking.sol#111)\n", + "markdown": "[AuraStaking.getReward(bool)](contracts/amo/AuraStaking.sol#L110-L125) ignores return value by [IAuraBaseRewardPool(auraPoolInfo.rewards).getReward(address(this),claimExtras)](contracts/amo/AuraStaking.sol#L111)\n", + "first_markdown_element": "contracts/amo/AuraStaking.sol#L110-L125", + "id": "334cc08346f4acb06b750e6d7ca0bbba6ed0f1443127882a8bce2dba76eedff5", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getBalances", + "source_mapping": { + "start": 2079, + "length": 154, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 55, + 56, + 57 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerPoolHelper", + "source_mapping": { + "start": 739, + "length": 19014, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "getBalances()" + } + }, + { + "type": "node", + "name": "(None,balances,None) = balancerVault.getPoolTokens(balancerPoolId)", + "source_mapping": { + "start": 2167, + "length": 59, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 56 + ], + "starting_column": 7, + "ending_column": 66 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getBalances", + "source_mapping": { + "start": 2079, + "length": 154, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 55, + 56, + 57 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerPoolHelper", + "source_mapping": { + "start": 739, + "length": 19014, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "getBalances()" + } + } + } } - } - } - } - ], - "description": "GnosisStrategy.constructor(address,address,string,address,address,address)._gnosisSafeWallet (contracts/v2/strategies/GnosisStrategy.sol#41) lacks a zero-check on :\n\t\t- gnosisSafeWallet = _gnosisSafeWallet (contracts/v2/strategies/GnosisStrategy.sol#44)\n", - "markdown": "[GnosisStrategy.constructor(address,address,string,address,address,address)._gnosisSafeWallet](contracts/v2/strategies/GnosisStrategy.sol#L41) lacks a zero-check on :\n\t\t- [gnosisSafeWallet = _gnosisSafeWallet](contracts/v2/strategies/GnosisStrategy.sol#L44)\n", - "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L41", - "id": "35341096e7cc1cb2d71fe6962d37434197ec4866db8dda0c2c8cd05c17585e33", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_implementation", - "source_mapping": { - "start": 1224, - "length": 23, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [40], - "starting_column": 17, - "ending_column": 40 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1212, - "length": 210, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [40, 41, 42, 43, 44], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(address,uint16)" + ], + "description": "BalancerPoolHelper.getBalances() (contracts/amo/helpers/BalancerPoolHelper.sol#55-57) ignores return value by (None,balances,None) = balancerVault.getPoolTokens(balancerPoolId) (contracts/amo/helpers/BalancerPoolHelper.sol#56)\n", + "markdown": "[BalancerPoolHelper.getBalances()](contracts/amo/helpers/BalancerPoolHelper.sol#L55-L57) ignores return value by [(None,balances,None) = balancerVault.getPoolTokens(balancerPoolId)](contracts/amo/helpers/BalancerPoolHelper.sol#L56)\n", + "first_markdown_element": "contracts/amo/helpers/BalancerPoolHelper.sol#L55-L57", + "id": "97630a6a935fd6fa31a1e214fdb8582cf37cbb5ba228037742cc7ccc77486019", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "proportionalAddLiquidityQuote", + "source_mapping": { + "start": 15567, + "length": 1930, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerPoolHelper", + "source_mapping": { + "start": 739, + "length": 19014, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "proportionalAddLiquidityQuote(uint256,uint256)" + } + }, + { + "type": "node", + "name": "(expectedBptAmount,None) = balancerHelpers.queryJoin(balancerPoolId,amo,amo,requestData)", + "source_mapping": { + "start": 17103, + "length": 88, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 374 + ], + "starting_column": 9, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "proportionalAddLiquidityQuote", + "source_mapping": { + "start": 15567, + "length": 1930, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerPoolHelper", + "source_mapping": { + "start": 739, + "length": 19014, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "proportionalAddLiquidityQuote(uint256,uint256)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "templeTeamPaymentsImplementation = _implementation", - "source_mapping": { - "start": 1282, - "length": 50, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [41], - "starting_column": 9, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1212, - "length": 210, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [40, 41, 42, 43, 44], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(address,uint16)" - } - } - } - } - ], - "description": "TempleTeamPaymentsFactory.constructor(address,uint16)._implementation (contracts/admin/TempleTeamPaymentsFactory.sol#40) lacks a zero-check on :\n\t\t- templeTeamPaymentsImplementation = _implementation (contracts/admin/TempleTeamPaymentsFactory.sol#41)\n", - "markdown": "[TempleTeamPaymentsFactory.constructor(address,uint16)._implementation](contracts/admin/TempleTeamPaymentsFactory.sol#L40) lacks a zero-check on :\n\t\t- [templeTeamPaymentsImplementation = _implementation](contracts/admin/TempleTeamPaymentsFactory.sol#L41)\n", - "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L40", - "id": "da87c5c8c1b8544472d505a239a86c8fd5eef6af865588f2c95eaae614f5b72a", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_defendStable", - "source_mapping": { - "start": 1200, - "length": 22, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [40], - "starting_column": 13, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1091, - "length": 271, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(TempleERC20Token,ITreasuryIV,address)" + ], + "description": "BalancerPoolHelper.proportionalAddLiquidityQuote(uint256,uint256) (contracts/amo/helpers/BalancerPoolHelper.sol#348-380) ignores return value by (expectedBptAmount,None) = balancerHelpers.queryJoin(balancerPoolId,amo,amo,requestData) (contracts/amo/helpers/BalancerPoolHelper.sol#374)\n", + "markdown": "[BalancerPoolHelper.proportionalAddLiquidityQuote(uint256,uint256)](contracts/amo/helpers/BalancerPoolHelper.sol#L348-L380) ignores return value by [(expectedBptAmount,None) = balancerHelpers.queryJoin(balancerPoolId,amo,amo,requestData)](contracts/amo/helpers/BalancerPoolHelper.sol#L374)\n", + "first_markdown_element": "contracts/amo/helpers/BalancerPoolHelper.sol#L348-L380", + "id": "44982b3b03e18740f01aed72e03f5657be31a18422cec5c4f5a8d53b084f8256", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "proportionalRemoveLiquidityQuote", + "source_mapping": { + "start": 17648, + "length": 1775, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerPoolHelper", + "source_mapping": { + "start": 739, + "length": 19014, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "proportionalRemoveLiquidityQuote(uint256,uint256)" + } + }, + { + "type": "node", + "name": "(None,requestData.minAmountsOut) = balancerHelpers.queryExit(balancerPoolId,amo,amo,requestData)", + "source_mapping": { + "start": 18569, + "length": 96, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 405 + ], + "starting_column": 9, + "ending_column": 105 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "proportionalRemoveLiquidityQuote", + "source_mapping": { + "start": 17648, + "length": 1775, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerPoolHelper", + "source_mapping": { + "start": 739, + "length": 19014, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "proportionalRemoveLiquidityQuote(uint256,uint256)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "defendStable = _defendStable", - "source_mapping": { - "start": 1326, - "length": 29, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [45], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1091, - "length": 271, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(TempleERC20Token,ITreasuryIV,address)" + ], + "description": "BalancerPoolHelper.proportionalRemoveLiquidityQuote(uint256,uint256) (contracts/amo/helpers/BalancerPoolHelper.sol#384-416) ignores return value by (None,requestData.minAmountsOut) = balancerHelpers.queryExit(balancerPoolId,amo,amo,requestData) (contracts/amo/helpers/BalancerPoolHelper.sol#405)\n", + "markdown": "[BalancerPoolHelper.proportionalRemoveLiquidityQuote(uint256,uint256)](contracts/amo/helpers/BalancerPoolHelper.sol#L384-L416) ignores return value by [(None,requestData.minAmountsOut) = balancerHelpers.queryExit(balancerPoolId,amo,amo,requestData)](contracts/amo/helpers/BalancerPoolHelper.sol#L405)\n", + "first_markdown_element": "contracts/amo/helpers/BalancerPoolHelper.sol#L384-L416", + "id": "08b9be6d43268a91c87113facf1f93ba28159d15047c9ef6e2a5e42a2a791c97", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "removeOtcMarket", + "source_mapping": { + "start": 4310, + "length": 464, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MultiOtcOffer", + "source_mapping": { + "start": 1163, + "length": 13535, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeOtcMarket(address,address)" + } + }, + { + "type": "node", + "name": "_otcMarketIds.remove(_marketId)", + "source_mapping": { + "start": 4579, + "length": 31, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 84 + ], + "starting_column": 9, + "ending_column": 40 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeOtcMarket", + "source_mapping": { + "start": 4310, + "length": 464, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "MultiOtcOffer", + "source_mapping": { + "start": 1163, + "length": 13535, + "filename_relative": "contracts/core/MultiOtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/MultiOtcOffer.sol", + "filename_short": "contracts/core/MultiOtcOffer.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeOtcMarket(address,address)" + } + } + } } - } - } - } - ], - "description": "TempleStableAMMRouter.constructor(TempleERC20Token,ITreasuryIV,address)._defendStable (contracts/amm/TempleStableAMMRouter.sol#40) lacks a zero-check on :\n\t\t- defendStable = _defendStable (contracts/amm/TempleStableAMMRouter.sol#45)\n", - "markdown": "[TempleStableAMMRouter.constructor(TempleERC20Token,ITreasuryIV,address)._defendStable](contracts/amm/TempleStableAMMRouter.sol#L40) lacks a zero-check on :\n\t\t- [defendStable = _defendStable](contracts/amm/TempleStableAMMRouter.sol#L45)\n", - "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L40", - "id": "8e8b46a3e001386612a0920cae43f3178af46f175ae977aa5f36adc5662d1cda", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_defendStable", - "source_mapping": { - "start": 1632, - "length": 21, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [56], - "starting_column": 30, - "ending_column": 51 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setDefendStable", - "source_mapping": { - "start": 1607, - "length": 112, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [56, 57, 58], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setDefendStable(address)" + ], + "description": "MultiOtcOffer.removeOtcMarket(address,address) (contracts/core/MultiOtcOffer.sol#81-89) ignores return value by _otcMarketIds.remove(_marketId) (contracts/core/MultiOtcOffer.sol#84)\n", + "markdown": "[MultiOtcOffer.removeOtcMarket(address,address)](contracts/core/MultiOtcOffer.sol#L81-L89) ignores return value by [_otcMarketIds.remove(_marketId)](contracts/core/MultiOtcOffer.sol#L84)\n", + "first_markdown_element": "contracts/core/MultiOtcOffer.sol#L81-L89", + "id": "79c4d4701a934e7e79200185323bb45688ce5b0c8b33dda709234bad490f1472", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setBorrowToken", + "source_mapping": { + "start": 4145, + "length": 1025, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setBorrowToken(IERC20,address,uint256,uint256,address)" + } + }, + { + "type": "node", + "name": "_borrowTokenSet.add(address(token))", + "source_mapping": { + "start": 5128, + "length": 35, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 126 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setBorrowToken", + "source_mapping": { + "start": 4145, + "length": 1025, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setBorrowToken(IERC20,address,uint256,uint256,address)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "defendStable = _defendStable", - "source_mapping": { - "start": 1684, - "length": 28, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [57], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setDefendStable", - "source_mapping": { - "start": 1607, - "length": 112, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [56, 57, 58], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setDefendStable(address)" + ], + "description": "TreasuryReservesVault.setBorrowToken(IERC20,address,uint256,uint256,address) (contracts/v2/TreasuryReservesVault.sol#108-127) ignores return value by _borrowTokenSet.add(address(token)) (contracts/v2/TreasuryReservesVault.sol#126)\n", + "markdown": "[TreasuryReservesVault.setBorrowToken(IERC20,address,uint256,uint256,address)](contracts/v2/TreasuryReservesVault.sol#L108-L127) ignores return value by [_borrowTokenSet.add(address(token))](contracts/v2/TreasuryReservesVault.sol#L126)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L108-L127", + "id": "5cf78f34e420dc046a400c32810667b772002358e964fa3e56b9b0a68b28a33f", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "removeBorrowToken", + "source_mapping": { + "start": 5247, + "length": 319, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeBorrowToken(IERC20)" + } + }, + { + "type": "node", + "name": "_borrowTokenSet.remove(address(token))", + "source_mapping": { + "start": 5521, + "length": 38, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 138 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeBorrowToken", + "source_mapping": { + "start": 5247, + "length": 319, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeBorrowToken(IERC20)" + } + } + } } - } - } - } - ], - "description": "TempleStableAMMRouter.setDefendStable(address)._defendStable (contracts/amm/TempleStableAMMRouter.sol#56) lacks a zero-check on :\n\t\t- defendStable = _defendStable (contracts/amm/TempleStableAMMRouter.sol#57)\n", - "markdown": "[TempleStableAMMRouter.setDefendStable(address)._defendStable](contracts/amm/TempleStableAMMRouter.sol#L56) lacks a zero-check on :\n\t\t- [defendStable = _defendStable](contracts/amm/TempleStableAMMRouter.sol#L57)\n", - "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L56", - "id": "de02254c0f567ff1a6e8223d4826abf485c07990091f962338f7c0fa067431d5", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_vaultedTempleAccount", - "source_mapping": { - "start": 2796, - "length": 29, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [69], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 2647, - "length": 819, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)" + ], + "description": "TreasuryReservesVault.removeBorrowToken(IERC20) (contracts/v2/TreasuryReservesVault.sol#132-139) ignores return value by _borrowTokenSet.remove(address(token)) (contracts/v2/TreasuryReservesVault.sol#138)\n", + "markdown": "[TreasuryReservesVault.removeBorrowToken(IERC20)](contracts/v2/TreasuryReservesVault.sol#L132-L139) ignores return value by [_borrowTokenSet.remove(address(token))](contracts/v2/TreasuryReservesVault.sol#L138)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L132-L139", + "id": "5474dfbc0dfd2144f1d3592aebc4e72de5fca48cbeb8ec28a4e82aa1c1ea096c", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + }, + { + "type": "node", + "name": "_strategySet.remove(strategy)", + "source_mapping": { + "start": 13418, + "length": 29, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 318 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "vaultedTempleAccount = _vaultedTempleAccount", - "source_mapping": { - "start": 3167, - "length": 44, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [78], - "starting_column": 9, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 2647, - "length": 819, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)" + ], + "description": "TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319) ignores return value by _strategySet.remove(strategy) (contracts/v2/TreasuryReservesVault.sol#318)\n", + "markdown": "[TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319) ignores return value by [_strategySet.remove(strategy)](contracts/v2/TreasuryReservesVault.sol#L318)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L283-L319", + "id": "14b0ae4775bb656e93254a9232479092aea49d94c14762546af7a2b568164211", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setIdentifierForCaller", + "source_mapping": { + "start": 1967, + "length": 555, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "is_dependency": false, + "lines": [ + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerProxy", + "source_mapping": { + "start": 808, + "length": 3156, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setIdentifierForCaller(address,string)" + } + }, + { + "type": "node", + "name": "_identifiers.add(_identifier)", + "source_mapping": { + "start": 2409, + "length": 29, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "is_dependency": false, + "lines": [ + 56 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setIdentifierForCaller", + "source_mapping": { + "start": 1967, + "length": 555, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "is_dependency": false, + "lines": [ + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerProxy", + "source_mapping": { + "start": 808, + "length": 3156, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setIdentifierForCaller(address,string)" + } + } + } } - } - } - } - ], - "description": "Vault.constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)._vaultedTempleAccount (contracts/core/Vault.sol#69) lacks a zero-check on :\n\t\t- vaultedTempleAccount = _vaultedTempleAccount (contracts/core/Vault.sol#78)\n", - "markdown": "[Vault.constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)._vaultedTempleAccount](contracts/core/Vault.sol#L69) lacks a zero-check on :\n\t\t- [vaultedTempleAccount = _vaultedTempleAccount](contracts/core/Vault.sol#L78)\n", - "first_markdown_element": "contracts/core/Vault.sol#L69", - "id": "222c440a9dfe634640e1dbd4fff56612fe2321415f49dc4ec16114fa6ec260ed", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "variable", - "name": "_templeExposure", - "source_mapping": { - "start": 1380, - "length": 23, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [39], - "starting_column": 38, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1347, - "length": 143, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [39, 40, 41, 42], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultedTemple", - "source_mapping": { - "start": 1207, - "length": 1005, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [ - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(IERC20,address)" + ], + "description": "TempleCircuitBreakerProxy.setIdentifierForCaller(address,string) (contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#47-59) ignores return value by _identifiers.add(_identifier) (contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#56)\n", + "markdown": "[TempleCircuitBreakerProxy.setIdentifierForCaller(address,string)](contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L47-L59) ignores return value by [_identifiers.add(_identifier)](contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L56)\n", + "first_markdown_element": "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol#L47-L59", + "id": "e72127f3ec266630bd01282f5d373e9eadb2fa635a529f17decfa267707680e0", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "latestAssetBalances", + "source_mapping": { + "start": 5827, + "length": 565, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "latestAssetBalances()" + } + }, + { + "type": "node", + "name": "(templeTokenBalance,quoteTokenBalance) = ramos.positions()", + "source_mapping": { + "start": 5992, + "length": 77, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 148 + ], + "starting_column": 9, + "ending_column": 86 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "latestAssetBalances", + "source_mapping": { + "start": 5827, + "length": 565, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "latestAssetBalances()" + } + } + } } - } - } - }, - { - "type": "node", - "name": "templeExposure = _templeExposure", - "source_mapping": { - "start": 1451, - "length": 32, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [41], - "starting_column": 9, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1347, - "length": 143, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [39, 40, 41, 42], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultedTemple", - "source_mapping": { - "start": 1207, - "length": 1005, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [ - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(IERC20,address)" + ], + "description": "RamosStrategy.latestAssetBalances() (contracts/v2/strategies/RamosStrategy.sol#144-159) ignores return value by (templeTokenBalance,quoteTokenBalance) = ramos.positions() (contracts/v2/strategies/RamosStrategy.sol#148)\n", + "markdown": "[RamosStrategy.latestAssetBalances()](contracts/v2/strategies/RamosStrategy.sol#L144-L159) ignores return value by [(templeTokenBalance,quoteTokenBalance) = ramos.positions()](contracts/v2/strategies/RamosStrategy.sol#L148)\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L144-L159", + "id": "420dcd2cbb24da1b9ab2dafe842594bf844fae670bc85fc21d1d3835c68dd336", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "proportionalAddLiquidityQuote", + "source_mapping": { + "start": 6569, + "length": 393, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "proportionalAddLiquidityQuote(uint256,uint256)" + } + }, + { + "type": "node", + "name": "ramos.poolHelper().proportionalAddLiquidityQuote(_quoteTokenAmount,_slippageBps)", + "source_mapping": { + "start": 6867, + "length": 88, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 174 + ], + "starting_column": 9, + "ending_column": 97 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "proportionalAddLiquidityQuote", + "source_mapping": { + "start": 6569, + "length": 393, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "proportionalAddLiquidityQuote(uint256,uint256)" + } + } + } } - } - } - } - ], - "description": "VaultedTemple.constructor(IERC20,address)._templeExposure (contracts/core/VaultedTemple.sol#39) lacks a zero-check on :\n\t\t- templeExposure = _templeExposure (contracts/core/VaultedTemple.sol#41)\n", - "markdown": "[VaultedTemple.constructor(IERC20,address)._templeExposure](contracts/core/VaultedTemple.sol#L39) lacks a zero-check on :\n\t\t- [templeExposure = _templeExposure](contracts/core/VaultedTemple.sol#L41)\n", - "first_markdown_element": "contracts/core/VaultedTemple.sol#L39", - "id": "2fcc44b40158b30b8b0d1614ffa673ffe544de75b922fdda079eea29dca64415", - "check": "missing-zero-check", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "getReward", - "source_mapping": { - "start": 4291, - "length": 657, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "RamosStrategy.proportionalAddLiquidityQuote(uint256,uint256) (contracts/v2/strategies/RamosStrategy.sol#165-175) ignores return value by ramos.poolHelper().proportionalAddLiquidityQuote(_quoteTokenAmount,_slippageBps) (contracts/v2/strategies/RamosStrategy.sol#174)\n", + "markdown": "[RamosStrategy.proportionalAddLiquidityQuote(uint256,uint256)](contracts/v2/strategies/RamosStrategy.sol#L165-L175) ignores return value by [ramos.poolHelper().proportionalAddLiquidityQuote(_quoteTokenAmount,_slippageBps)](contracts/v2/strategies/RamosStrategy.sol#L174)\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L165-L175", + "id": "b56d2f4548e025710d998bc242ac7f3032f0e8ea504c62f800fead5160f65786", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "proportionalRemoveLiquidityQuote", + "source_mapping": { + "start": 7587, + "length": 438, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "proportionalRemoveLiquidityQuote(uint256,uint256)" + } + }, + { + "type": "node", + "name": "ramos.poolHelper().proportionalRemoveLiquidityQuote(_bptAmount,_slippageBps)", + "source_mapping": { + "start": 7934, + "length": 84, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 202 + ], + "starting_column": 9, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "proportionalRemoveLiquidityQuote", + "source_mapping": { + "start": 7587, + "length": 438, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "proportionalRemoveLiquidityQuote(uint256,uint256)" + } + } + } } - }, - "signature": "getReward(bool)" - } - }, - { - "type": "node", - "name": "balance = rewardToken.balanceOf(address(this))", - "source_mapping": { - "start": 4735, - "length": 54, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [118], - "starting_column": 17, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "getReward", - "source_mapping": { - "start": 4291, - "length": 657, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "getReward(bool)" + ], + "description": "RamosStrategy.proportionalRemoveLiquidityQuote(uint256,uint256) (contracts/v2/strategies/RamosStrategy.sol#192-203) ignores return value by ramos.poolHelper().proportionalRemoveLiquidityQuote(_bptAmount,_slippageBps) (contracts/v2/strategies/RamosStrategy.sol#202)\n", + "markdown": "[RamosStrategy.proportionalRemoveLiquidityQuote(uint256,uint256)](contracts/v2/strategies/RamosStrategy.sol#L192-L203) ignores return value by [ramos.poolHelper().proportionalRemoveLiquidityQuote(_bptAmount,_slippageBps)](contracts/v2/strategies/RamosStrategy.sol#L202)\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L192-L203", + "id": "ed71e6585e1914cd70e3ed747dea0a932bd4ba9629191c626628ce16c695c11d", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "populateShutdownData", + "source_mapping": { + "start": 9022, + "length": 564, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "populateShutdownData(bytes)" + } + }, + { + "type": "node", + "name": "(shutdownParams.bptAmount,None,None) = ramos.positions()", + "source_mapping": { + "start": 9349, + "length": 48, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 240 + ], + "starting_column": 9, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "populateShutdownData", + "source_mapping": { + "start": 9022, + "length": 564, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "populateShutdownData(bytes)" + } + } + } } - } - } - } - ], - "description": "AuraStaking.getReward(bool) (contracts/amo/AuraStaking.sol#110-125) has external calls inside a loop: balance = rewardToken.balanceOf(address(this)) (contracts/amo/AuraStaking.sol#118)\n", - "markdown": "[AuraStaking.getReward(bool)](contracts/amo/AuraStaking.sol#L110-L125) has external calls inside a loop: [balance = rewardToken.balanceOf(address(this))](contracts/amo/AuraStaking.sol#L118)\n", - "first_markdown_element": "contracts/amo/AuraStaking.sol#L110-L125", - "id": "dab641382da7356da589d9f335e183a99e5e9d0e41793c5d48158d07f1c57272", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "RamosStrategy.populateShutdownData(bytes) (contracts/v2/strategies/RamosStrategy.sol#232-243) ignores return value by (shutdownParams.bptAmount,None,None) = ramos.positions() (contracts/v2/strategies/RamosStrategy.sol#240)\n", + "markdown": "[RamosStrategy.populateShutdownData(bytes)](contracts/v2/strategies/RamosStrategy.sol#L232-L243) ignores return value by [(shutdownParams.bptAmount,None,None) = ramos.positions()](contracts/v2/strategies/RamosStrategy.sol#L240)\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L232-L243", + "id": "e68b668794a623b6a5a283b3672d9ddf56508b69062c77c9f4af7f0faf1aa51e", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 9818, + "length": 631, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + }, + { + "type": "node", + "name": "ramos.removeLiquidity(params.requestData,params.bptAmount)", + "source_mapping": { + "start": 9989, + "length": 59, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 252 + ], + "starting_column": 9, + "ending_column": 68 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 9818, + "length": 631, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + } + } } - }, - "signature": "shutdown(address)" - } - }, - { - "type": "node", - "name": "_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)", - "source_mapping": { - "start": 12499, - "length": 64, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [296], - "starting_column": 13, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "RamosStrategy._doShutdown(bytes) (contracts/v2/strategies/RamosStrategy.sol#250-263) ignores return value by ramos.removeLiquidity(params.requestData,params.bptAmount) (contracts/v2/strategies/RamosStrategy.sol#252)\n", + "markdown": "[RamosStrategy._doShutdown(bytes)](contracts/v2/strategies/RamosStrategy.sol#L250-L263) ignores return value by [ramos.removeLiquidity(params.requestData,params.bptAmount)](contracts/v2/strategies/RamosStrategy.sol#L252)\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L250-L263", + "id": "cab4a6d607fc52a73a76b47684750061e88667af7fd3a9cc5e85e235479031b6", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_addLiquidity", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shutdown(address)" + "start": 1756, + "length": 1076, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_addLiquidity(uint256,uint256,uint256,uint256,IUniswapV2Pair)" + } + }, + { + "type": "node", + "name": "(reserveA,reserveB) = pair.getReserves()", + "source_mapping": { + "start": 1986, + "length": 52, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 68 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_addLiquidity", + "source_mapping": { + "start": 1756, + "length": 1076, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_addLiquidity(uint256,uint256,uint256,uint256,IUniswapV2Pair)" + } + } + } } - } - } - } - ], - "description": "TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319) has external calls inside a loop: _outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy) (contracts/v2/TreasuryReservesVault.sol#296)\n", - "markdown": "[TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319) has external calls inside a loop: [_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)](contracts/v2/TreasuryReservesVault.sol#L296)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L283-L319", - "id": "319ffc2aa8a4b776f15de07870a0d4d5abe0125bc3d87d10222a70895adf8bba", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "strategyBalanceSheet", - "source_mapping": { - "start": 19539, - "length": 1196, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleStableAMMRouter._addLiquidity(uint256,uint256,uint256,uint256,IUniswapV2Pair) (contracts/amm/TempleStableAMMRouter.sol#61-83) ignores return value by (reserveA,reserveB) = pair.getReserves() (contracts/amm/TempleStableAMMRouter.sol#68)\n", + "markdown": "[TempleStableAMMRouter._addLiquidity(uint256,uint256,uint256,uint256,IUniswapV2Pair)](contracts/amm/TempleStableAMMRouter.sol#L61-L83) ignores return value by [(reserveA,reserveB) = pair.getReserves()](contracts/amm/TempleStableAMMRouter.sol#L68)\n", + "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L61-L83", + "id": "f24551aba47520a07ab79471d9ec9cfe2fe87cd09c197da35e42997dcded68a8", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "swapExactStableForTempleQuote", + "source_mapping": { + "start": 7556, + "length": 271, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swapExactStableForTempleQuote(address,uint256)" + } + }, + { + "type": "node", + "name": "(reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves()", + "source_mapping": { + "start": 7672, + "length": 76, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 203 + ], + "starting_column": 9, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapExactStableForTempleQuote", + "source_mapping": { + "start": 7556, + "length": 271, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 202, + 203, + 204, + 205 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swapExactStableForTempleQuote(address,uint256)" + } + } + } } - }, - "signature": "strategyBalanceSheet(address)" - } - }, - { - "type": "node", - "name": "dTokenBalances[i] = ITempleStrategy.AssetBalance(_token,borrowTokens[IERC20(_token)].dToken.balanceOf(strategy))", - "source_mapping": { - "start": 20490, - "length": 113, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [464], - "starting_column": 13, - "ending_column": 126 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "strategyBalanceSheet", - "source_mapping": { - "start": 19539, - "length": 1196, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "TempleStableAMMRouter.swapExactStableForTempleQuote(address,uint256) (contracts/amm/TempleStableAMMRouter.sol#202-205) ignores return value by (reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves() (contracts/amm/TempleStableAMMRouter.sol#203)\n", + "markdown": "[TempleStableAMMRouter.swapExactStableForTempleQuote(address,uint256)](contracts/amm/TempleStableAMMRouter.sol#L202-L205) ignores return value by [(reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves()](contracts/amm/TempleStableAMMRouter.sol#L203)\n", + "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L202-L205", + "id": "bcaddbd83baa19b08f21d46eaa6d5040ec3da28323505b65de50fbfbd874521c", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "swapExactTempleForStableQuote", + "source_mapping": { + "start": 7833, + "length": 639, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swapExactTempleForStableQuote(address,uint256)" + } + }, + { + "type": "node", + "name": "(reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves()", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "strategyBalanceSheet(address)" + "start": 7967, + "length": 76, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 208 + ], + "starting_column": 9, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapExactTempleForStableQuote", + "source_mapping": { + "start": 7833, + "length": 639, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swapExactTempleForStableQuote(address,uint256)" + } + } + } } - } - } - } - ], - "description": "TreasuryReservesVault.strategyBalanceSheet(address) (contracts/v2/TreasuryReservesVault.sol#447-467) has external calls inside a loop: dTokenBalances[i] = ITempleStrategy.AssetBalance(_token,borrowTokens[IERC20(_token)].dToken.balanceOf(strategy)) (contracts/v2/TreasuryReservesVault.sol#464)\n", - "markdown": "[TreasuryReservesVault.strategyBalanceSheet(address)](contracts/v2/TreasuryReservesVault.sol#L447-L467) has external calls inside a loop: [dTokenBalances[i] = ITempleStrategy.AssetBalance(_token,borrowTokens[IERC20(_token)].dToken.balanceOf(strategy))](contracts/v2/TreasuryReservesVault.sol#L464)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L447-L467", - "id": "20bcad4f9996938c51c34e640ba88b7c6f2e553a9bfd34b0e170bf1b1904292b", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "latestAssetBalances", - "source_mapping": { - "start": 6069, - "length": 754, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleStableAMMRouter.swapExactTempleForStableQuote(address,uint256) (contracts/amm/TempleStableAMMRouter.sol#207-221) ignores return value by (reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves() (contracts/amm/TempleStableAMMRouter.sol#208)\n", + "markdown": "[TempleStableAMMRouter.swapExactTempleForStableQuote(address,uint256)](contracts/amm/TempleStableAMMRouter.sol#L207-L221) ignores return value by [(reserveTemple,reserveFrax) = IUniswapV2Pair(pair).getReserves()](contracts/amm/TempleStableAMMRouter.sol#L208)\n", + "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L207-L221", + "id": "43ba957c0d22f3540a298f9bbbe3e7ef022879a661282996ee551c7d780c6394", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rebalance", + "source_mapping": { + "start": 1808, + "length": 798, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalance(Vault,TreasuryFarmingRevenue)" + } + }, + { + "type": "node", + "name": "(inWindow) = vault.inEnterExitWindow()", + "source_mapping": { + "start": 1916, + "length": 45, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 59 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalance", + "source_mapping": { + "start": 1808, + "length": 798, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalance(Vault,TreasuryFarmingRevenue)" + } + } + } } - }, - "signature": "latestAssetBalances()" - } - }, - { - "type": "node", - "name": "_gnosisBalance = (IERC20(_asset).balanceOf(gnosisSafeWallet) + IERC20(_asset).balanceOf(address(this)))", - "source_mapping": { - "start": 6422, - "length": 250, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [165, 166, 167, 168, 169, 170], - "starting_column": 13, - "ending_column": 18 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "latestAssetBalances", - "source_mapping": { - "start": 6069, - "length": 754, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "latestAssetBalances()" + ], + "description": "OpsManagerLib.rebalance(Vault,TreasuryFarmingRevenue) (contracts/core/OpsManagerLib.sol#55-72) ignores return value by (inWindow) = vault.inEnterExitWindow() (contracts/core/OpsManagerLib.sol#59)\n", + "markdown": "[OpsManagerLib.rebalance(Vault,TreasuryFarmingRevenue)](contracts/core/OpsManagerLib.sol#L55-L72) ignores return value by [(inWindow) = vault.inEnterExitWindow()](contracts/core/OpsManagerLib.sol#L59)\n", + "first_markdown_element": "contracts/core/OpsManagerLib.sol#L55-L72", + "id": "7e51402c4c3f903960137b695ab80a5a95e96c56eb93a4b7d980470911d0bde6", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "requiresRebalance", + "source_mapping": { + "start": 2821, + "length": 553, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" + } + }, + { + "type": "node", + "name": "(inWindow) = vaults[i].inEnterExitWindow()", + "source_mapping": { + "start": 3101, + "length": 49, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 86 + ], + "starting_column": 13, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "requiresRebalance", + "source_mapping": { + "start": 2821, + "length": 553, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" + } + } + } } - } - } - } - ], - "description": "GnosisStrategy.latestAssetBalances() (contracts/v2/strategies/GnosisStrategy.sol#155-177) has external calls inside a loop: _gnosisBalance = (IERC20(_asset).balanceOf(gnosisSafeWallet) + IERC20(_asset).balanceOf(address(this))) (contracts/v2/strategies/GnosisStrategy.sol#165-170)\n", - "markdown": "[GnosisStrategy.latestAssetBalances()](contracts/v2/strategies/GnosisStrategy.sol#L155-L177) has external calls inside a loop: [_gnosisBalance = (IERC20(_asset).balanceOf(gnosisSafeWallet) + IERC20(_asset).balanceOf(address(this)))](contracts/v2/strategies/GnosisStrategy.sol#L165-L170)\n", - "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L155-L177", - "id": "303fe06184eefb239bc471a22808ec3f7ce192673117af8e628268271f896623", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "addRevenue", - "source_mapping": { - "start": 3615, - "length": 351, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [110, 111, 112, 113, 114, 115, 116], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue) (contracts/core/OpsManagerLib.sol#79-95) ignores return value by (inWindow) = vaults[i].inEnterExitWindow() (contracts/core/OpsManagerLib.sol#86)\n", + "markdown": "[OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue)](contracts/core/OpsManagerLib.sol#L79-L95) ignores return value by [(inWindow) = vaults[i].inEnterExitWindow()](contracts/core/OpsManagerLib.sol#L86)\n", + "first_markdown_element": "contracts/core/OpsManagerLib.sol#L79-L95", + "id": "0d939f6443be831bd662e4b85b8b26b8ca9716b8fd984c5961f3bbf84c6a1301", + "check": "unused-return", + "impact": "Medium", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "quoteToken", + "source_mapping": { + "start": 4822, + "length": 18, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 103 + ], + "starting_column": 9, + "ending_column": 27 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "maxRebalanceAmounts", + "source_mapping": { + "start": 4738, + "length": 140, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 101, + 102, + 103, + 104, + 105 + ], + "starting_column": 5, + "ending_column": 7 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IRamos", + "source_mapping": { + "start": 1408, + "length": 10519, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "maxRebalanceAmounts()" + } + } + } + }, + { + "type": "function", + "name": "quoteToken", + "source_mapping": { + "start": 3767, + "length": 53, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 80 + ], + "starting_column": 5, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IRamos", + "source_mapping": { + "start": 1408, + "length": 10519, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "quoteToken()" + } } - }, - "signature": "addRevenue(IERC20[],uint256[])" - } - }, - { - "type": "node", - "name": "pools[exposureTokens[i]].addRevenue(amounts[i])", - "source_mapping": { - "start": 3902, - "length": 47, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [114], - "starting_column": 13, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addRevenue", - "source_mapping": { - "start": 3615, - "length": 351, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [110, 111, 112, 113, 114, 115, 116], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "addRevenue(IERC20[],uint256[])" + ], + "description": "IRamos.maxRebalanceAmounts().quoteToken (contracts/interfaces/amo/IRamos.sol#103) shadows:\n\t- IRamos.quoteToken() (contracts/interfaces/amo/IRamos.sol#80) (function)\n", + "markdown": "[IRamos.maxRebalanceAmounts().quoteToken](contracts/interfaces/amo/IRamos.sol#L103) shadows:\n\t- [IRamos.quoteToken()](contracts/interfaces/amo/IRamos.sol#L80) (function)\n", + "first_markdown_element": "contracts/interfaces/amo/IRamos.sol#L103", + "id": "a030cfdb07ff13cdfeb8487608a714d3b198ff28886a8ef272f9e70a87a70f0a", + "check": "shadowing-local", + "impact": "Low", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "protocolToken", + "source_mapping": { + "start": 4850, + "length": 21, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 104 + ], + "starting_column": 9, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "maxRebalanceAmounts", + "source_mapping": { + "start": 4738, + "length": 140, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 101, + 102, + 103, + 104, + 105 + ], + "starting_column": 5, + "ending_column": 7 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IRamos", + "source_mapping": { + "start": 1408, + "length": 10519, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "maxRebalanceAmounts()" + } + } + } + }, + { + "type": "function", + "name": "protocolToken", + "source_mapping": { + "start": 3567, + "length": 56, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 76 + ], + "starting_column": 5, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "IRamos", + "source_mapping": { + "start": 1408, + "length": 10519, + "filename_relative": "contracts/interfaces/amo/IRamos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/amo/IRamos.sol", + "filename_short": "contracts/interfaces/amo/IRamos.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "protocolToken()" + } } - } - } - } - ], - "description": "OpsManager.addRevenue(IERC20[],uint256[]) (contracts/core/OpsManager.sol#110-116) has external calls inside a loop: pools[exposureTokens[i]].addRevenue(amounts[i]) (contracts/core/OpsManager.sol#114)\n", - "markdown": "[OpsManager.addRevenue(IERC20[],uint256[])](contracts/core/OpsManager.sol#L110-L116) has external calls inside a loop: [pools[exposureTokens[i]].addRevenue(amounts[i])](contracts/core/OpsManager.sol#L114)\n", - "first_markdown_element": "contracts/core/OpsManager.sol#L110-L116", - "id": "5665a1327173172c99a94790114d41a7287eb453518635edd48056ecba261fa4", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "increaseVaultTemple", - "source_mapping": { - "start": 4395, - "length": 447, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [130, 131, 132, 133, 134, 135, 136, 137], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "IRamos.maxRebalanceAmounts().protocolToken (contracts/interfaces/amo/IRamos.sol#104) shadows:\n\t- IRamos.protocolToken() (contracts/interfaces/amo/IRamos.sol#76) (function)\n", + "markdown": "[IRamos.maxRebalanceAmounts().protocolToken](contracts/interfaces/amo/IRamos.sol#L104) shadows:\n\t- [IRamos.protocolToken()](contracts/interfaces/amo/IRamos.sol#L76) (function)\n", + "first_markdown_element": "contracts/interfaces/amo/IRamos.sol#L104", + "id": "99988e8d4356d61dc22dc1203ce47d52bd194ee6c04869d1c08b03332a4a64b3", + "check": "shadowing-local", + "impact": "Low", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "baseShares", + "source_mapping": { + "start": 3468, + "length": 18, + "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 86 + ], + "starting_column": 9, + "ending_column": 27 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "debtors", + "source_mapping": { + "start": 3219, + "length": 737, + "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 5, + "ending_column": 7 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ITempleDebtToken", + "source_mapping": { + "start": 325, + "length": 8309, + "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "debtors(address)" + } + } + } + }, + { + "type": "function", + "name": "baseShares", + "source_mapping": { + "start": 1667, + "length": 54, + "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 42 + ], + "starting_column": 5, + "ending_column": 59 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ITempleDebtToken", + "source_mapping": { + "start": 325, + "length": 8309, + "filename_relative": "contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITempleDebtToken.sol", + "filename_short": "contracts/interfaces/v2/ITempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "baseShares()" + } } - }, - "signature": "increaseVaultTemple(Vault[],uint256[])" - } - }, - { - "type": "node", - "name": "templeExposure.mint(address(vaults[i]),amountsTemple[i])", - "source_mapping": { - "start": 4768, - "length": 57, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [135], - "starting_column": 13, - "ending_column": 70 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "increaseVaultTemple", - "source_mapping": { - "start": 4395, - "length": 447, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [130, 131, 132, 133, 134, 135, 136, 137], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "increaseVaultTemple(Vault[],uint256[])" + ], + "description": "ITempleDebtToken.debtors(address).baseShares (contracts/interfaces/v2/ITempleDebtToken.sol#86) shadows:\n\t- ITempleDebtToken.baseShares() (contracts/interfaces/v2/ITempleDebtToken.sol#42) (function)\n", + "markdown": "[ITempleDebtToken.debtors(address).baseShares](contracts/interfaces/v2/ITempleDebtToken.sol#L86) shadows:\n\t- [ITempleDebtToken.baseShares()](contracts/interfaces/v2/ITempleDebtToken.sol#L42) (function)\n", + "first_markdown_element": "contracts/interfaces/v2/ITempleDebtToken.sol#L86", + "id": "660d8ad3fe151743a4b6eac08ff790cbd92361508e6a7e1ac51d359fbd40579a", + "check": "shadowing-local", + "impact": "Low", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "borrow", + "source_mapping": { + "start": 11494, + "length": 11, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 291 + ], + "starting_column": 30, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setGlobalPaused", + "source_mapping": { + "start": 11469, + "length": 60, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 291 + ], + "starting_column": 5, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ITreasuryReservesVault", + "source_mapping": { + "start": 1896, + "length": 12436, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setGlobalPaused(bool,bool)" + } + } + } + }, + { + "type": "function", + "name": "borrow", + "source_mapping": { + "start": 13392, + "length": 80, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 336 + ], + "starting_column": 5, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ITreasuryReservesVault", + "source_mapping": { + "start": 1896, + "length": 12436, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrow(IERC20,uint256,address)" + } } - } - } - } - ], - "description": "OpsManager.increaseVaultTemple(Vault[],uint256[]) (contracts/core/OpsManager.sol#130-137) has external calls inside a loop: templeExposure.mint(address(vaults[i]),amountsTemple[i]) (contracts/core/OpsManager.sol#135)\n", - "markdown": "[OpsManager.increaseVaultTemple(Vault[],uint256[])](contracts/core/OpsManager.sol#L130-L137) has external calls inside a loop: [templeExposure.mint(address(vaults[i]),amountsTemple[i])](contracts/core/OpsManager.sol#L135)\n", - "first_markdown_element": "contracts/core/OpsManager.sol#L130-L137", - "id": "73ad477fce052d6df52f4050312b09c115d39ab6a4163386fdb2d902cdf8d2a5", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "liquidateExposures", - "source_mapping": { - "start": 5038, - "length": 531, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "ITreasuryReservesVault.setGlobalPaused(bool,bool).borrow (contracts/interfaces/v2/ITreasuryReservesVault.sol#291) shadows:\n\t- ITreasuryReservesVault.borrow(IERC20,uint256,address) (contracts/interfaces/v2/ITreasuryReservesVault.sol#336) (function)\n", + "markdown": "[ITreasuryReservesVault.setGlobalPaused(bool,bool).borrow](contracts/interfaces/v2/ITreasuryReservesVault.sol#L291) shadows:\n\t- [ITreasuryReservesVault.borrow(IERC20,uint256,address)](contracts/interfaces/v2/ITreasuryReservesVault.sol#L336) (function)\n", + "first_markdown_element": "contracts/interfaces/v2/ITreasuryReservesVault.sol#L291", + "id": "ee178bdb812ac154f4b12235ea96012285731106c401b64ca146c3171f9f2b58", + "check": "shadowing-local", + "impact": "Low", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "borrow", + "source_mapping": { + "start": 11679, + "length": 11, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 296 + ], + "starting_column": 50, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setStrategyPaused", + "source_mapping": { + "start": 11634, + "length": 80, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 296 + ], + "starting_column": 5, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ITreasuryReservesVault", + "source_mapping": { + "start": 1896, + "length": 12436, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setStrategyPaused(address,bool,bool)" + } + } + } + }, + { + "type": "function", + "name": "borrow", + "source_mapping": { + "start": 13392, + "length": 80, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 336 + ], + "starting_column": 5, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ITreasuryReservesVault", + "source_mapping": { + "start": 1896, + "length": 12436, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrow(IERC20,uint256,address)" + } } - }, - "signature": "liquidateExposures(Vault[],IERC20[])" - } - }, - { - "type": "node", - "name": "exposures[i] = pools[exposureTokens[i]].exposure()", - "source_mapping": { - "start": 5294, - "length": 50, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [148], - "starting_column": 13, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "liquidateExposures", - "source_mapping": { - "start": 5038, - "length": 531, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "liquidateExposures(Vault[],IERC20[])" + ], + "description": "ITreasuryReservesVault.setStrategyPaused(address,bool,bool).borrow (contracts/interfaces/v2/ITreasuryReservesVault.sol#296) shadows:\n\t- ITreasuryReservesVault.borrow(IERC20,uint256,address) (contracts/interfaces/v2/ITreasuryReservesVault.sol#336) (function)\n", + "markdown": "[ITreasuryReservesVault.setStrategyPaused(address,bool,bool).borrow](contracts/interfaces/v2/ITreasuryReservesVault.sol#L296) shadows:\n\t- [ITreasuryReservesVault.borrow(IERC20,uint256,address)](contracts/interfaces/v2/ITreasuryReservesVault.sol#L336) (function)\n", + "first_markdown_element": "contracts/interfaces/v2/ITreasuryReservesVault.sol#L296", + "id": "1f2b144fa0b8083ee1a1ca697a2403bf2d85ddb7223aae096e89a677da991192", + "check": "shadowing-local", + "impact": "Low", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "amountOut_scope_0", + "source_mapping": { + "start": 4835, + "length": 62, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 133 + ], + "starting_column": 9, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapExactStableForTemple", + "source_mapping": { + "start": 4485, + "length": 687, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swapExactStableForTemple(uint256,uint256,address,address,uint256)" + } + } + } + }, + { + "type": "variable", + "name": "amountOut", + "source_mapping": { + "start": 4685, + "length": 14, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 128 + ], + "starting_column": 50, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapExactStableForTemple", + "source_mapping": { + "start": 4485, + "length": 687, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swapExactStableForTemple(uint256,uint256,address,address,uint256)" + } + } + } + }, + { + "type": "variable", + "name": "amountOut", + "source_mapping": { + "start": 4685, + "length": 14, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 128 + ], + "starting_column": 50, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapExactStableForTemple", + "source_mapping": { + "start": 4485, + "length": 687, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swapExactStableForTemple(uint256,uint256,address,address,uint256)" + } + } + } + }, + { + "type": "variable", + "name": "amountOut", + "source_mapping": { + "start": 4685, + "length": 14, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 128 + ], + "starting_column": 50, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swapExactStableForTemple", + "source_mapping": { + "start": 4485, + "length": 687, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swapExactStableForTemple(uint256,uint256,address,address,uint256)" + } + } + } } - } - } - } - ], - "description": "OpsManager.liquidateExposures(Vault[],IERC20[]) (contracts/core/OpsManager.sol#144-155) has external calls inside a loop: exposures[i] = pools[exposureTokens[i]].exposure() (contracts/core/OpsManager.sol#148)\n", - "markdown": "[OpsManager.liquidateExposures(Vault[],IERC20[])](contracts/core/OpsManager.sol#L144-L155) has external calls inside a loop: [exposures[i] = pools[exposureTokens[i]].exposure()](contracts/core/OpsManager.sol#L148)\n", - "first_markdown_element": "contracts/core/OpsManager.sol#L144-L155", - "id": "ead7d436da8a29569022b48ffddbfceb808c4dd315ce7ca9d743dc5226a168dc", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "liquidateExposures", - "source_mapping": { - "start": 5038, - "length": 531, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut_scope_0 (contracts/amm/TempleStableAMMRouter.sol#133) shadows:\n\t- TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut (contracts/amm/TempleStableAMMRouter.sol#128) (return variable)\n\t- TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut (contracts/amm/TempleStableAMMRouter.sol#128) (return variable)\n\t- TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut (contracts/amm/TempleStableAMMRouter.sol#128) (return variable)\n", + "markdown": "[TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut_scope_0](contracts/amm/TempleStableAMMRouter.sol#L133) shadows:\n\t- [TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut](contracts/amm/TempleStableAMMRouter.sol#L128) (return variable)\n\t- [TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut](contracts/amm/TempleStableAMMRouter.sol#L128) (return variable)\n\t- [TempleStableAMMRouter.swapExactStableForTemple(uint256,uint256,address,address,uint256).amountOut](contracts/amm/TempleStableAMMRouter.sol#L128) (return variable)\n", + "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L133", + "id": "dfcbde91a2b5ed5d0d5ed22c62f0b14c024b922a48014a11601682bab0c693fa", + "check": "shadowing-local", + "impact": "Low", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "setEpy", + "source_mapping": { + "start": 2547, + "length": 212, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 72, + 73, + 74, + 75 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setEpy(uint256,uint256)" + } + }, + { + "type": "node", + "name": "epy = ABDKMath64x64.fromUInt(1).add(ABDKMath64x64.divu(_numerator,_denominator))", + "source_mapping": { + "start": 2671, + "length": 81, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 74 + ], + "starting_column": 9, + "ending_column": 90 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setEpy", + "source_mapping": { + "start": 2547, + "length": 212, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 72, + 73, + 74, + 75 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setEpy(uint256,uint256)" + } + } + } } - }, - "signature": "liquidateExposures(Vault[],IERC20[])" - } - }, - { - "type": "node", - "name": "vaults[i_scope_0].redeemExposures(exposures)", - "source_mapping": { - "start": 5516, - "length": 36, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [153], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "liquidateExposures", - "source_mapping": { - "start": 5038, - "length": 531, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "liquidateExposures(Vault[],IERC20[])" + ], + "description": "TempleStaking.setEpy(uint256,uint256) (contracts/deprecated/TempleStaking.sol#72-75) should emit an event for: \n\t- epy = ABDKMath64x64.fromUInt(1).add(ABDKMath64x64.divu(_numerator,_denominator)) (contracts/deprecated/TempleStaking.sol#74) \n", + "markdown": "[TempleStaking.setEpy(uint256,uint256)](contracts/deprecated/TempleStaking.sol#L72-L75) should emit an event for: \n\t- [epy = ABDKMath64x64.fromUInt(1).add(ABDKMath64x64.divu(_numerator,_denominator))](contracts/deprecated/TempleStaking.sol#L74) \n", + "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L72-L75", + "id": "66bcff6498cebf5796c64af18f0c23c346a69b2f3379e2371869c68331d2d460", + "check": "events-maths", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_owner", + "source_mapping": { + "start": 2665, + "length": 14, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 67 + ], + "starting_column": 17, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2653, + "length": 152, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address)" + } + } + } + }, + { + "type": "node", + "name": "owner = _owner", + "source_mapping": { + "start": 2732, + "length": 14, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 68 + ], + "starting_column": 9, + "ending_column": 23 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2653, + "length": 152, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address)" + } + } + } } - } - } - } - ], - "description": "OpsManager.liquidateExposures(Vault[],IERC20[]) (contracts/core/OpsManager.sol#144-155) has external calls inside a loop: vaults[i_scope_0].redeemExposures(exposures) (contracts/core/OpsManager.sol#153)\n", - "markdown": "[OpsManager.liquidateExposures(Vault[],IERC20[])](contracts/core/OpsManager.sol#L144-L155) has external calls inside a loop: [vaults[i_scope_0].redeemExposures(exposures)](contracts/core/OpsManager.sol#L153)\n", - "first_markdown_element": "contracts/core/OpsManager.sol#L144-L155", - "id": "03a21ffca7a3586cab7fab91c4d3c7df01b444412ef9a937d63e8d95d7ef5075", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "requiresRebalance", - "source_mapping": { - "start": 2821, - "length": 553, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleUniswapV2Pair.constructor(address,address,address)._owner (contracts/amm/TempleUniswapV2Pair.sol#67) lacks a zero-check on :\n\t\t- owner = _owner (contracts/amm/TempleUniswapV2Pair.sol#68)\n", + "markdown": "[TempleUniswapV2Pair.constructor(address,address,address)._owner](contracts/amm/TempleUniswapV2Pair.sol#L67) lacks a zero-check on :\n\t\t- [owner = _owner](contracts/amm/TempleUniswapV2Pair.sol#L68)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L67", + "id": "957fa8fd60f70987f3ddecb1cc94bcc42a04d5732b7d1fd612e14be458618171", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_token0", + "source_mapping": { + "start": 2681, + "length": 15, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 67 + ], + "starting_column": 33, + "ending_column": 48 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2653, + "length": 152, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address)" + } + } + } + }, + { + "type": "node", + "name": "token0 = _token0", + "source_mapping": { + "start": 2756, + "length": 16, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 69 + ], + "starting_column": 9, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2653, + "length": 152, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address)" + } + } + } } - }, - "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" - } - }, - { - "type": "node", - "name": "(inWindow) = vaults[i].inEnterExitWindow()", - "source_mapping": { - "start": 3101, - "length": 49, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [86], - "starting_column": 13, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "requiresRebalance", - "source_mapping": { - "start": 2821, - "length": 553, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" + ], + "description": "TempleUniswapV2Pair.constructor(address,address,address)._token0 (contracts/amm/TempleUniswapV2Pair.sol#67) lacks a zero-check on :\n\t\t- token0 = _token0 (contracts/amm/TempleUniswapV2Pair.sol#69)\n", + "markdown": "[TempleUniswapV2Pair.constructor(address,address,address)._token0](contracts/amm/TempleUniswapV2Pair.sol#L67) lacks a zero-check on :\n\t\t- [token0 = _token0](contracts/amm/TempleUniswapV2Pair.sol#L69)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L67", + "id": "89b68064543393a53cb614749cb260c4fb872797867021adbebf53b5a0362b2f", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_token1", + "source_mapping": { + "start": 2698, + "length": 15, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 67 + ], + "starting_column": 50, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2653, + "length": 152, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address)" + } + } + } + }, + { + "type": "node", + "name": "token1 = _token1", + "source_mapping": { + "start": 2782, + "length": 16, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 70 + ], + "starting_column": 9, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2653, + "length": 152, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address)" + } + } + } } - } - } - } - ], - "description": "OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue) (contracts/core/OpsManagerLib.sol#79-95) has external calls inside a loop: (inWindow) = vaults[i].inEnterExitWindow() (contracts/core/OpsManagerLib.sol#86)\n", - "markdown": "[OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue)](contracts/core/OpsManagerLib.sol#L79-L95) has external calls inside a loop: [(inWindow) = vaults[i].inEnterExitWindow()](contracts/core/OpsManagerLib.sol#L86)\n", - "first_markdown_element": "contracts/core/OpsManagerLib.sol#L79-L95", - "id": "33abe3219d901465ec0025ed3b5cee25a23e8e043748dac853f60e352579796c", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "requiresRebalance", - "source_mapping": { - "start": 2821, - "length": 553, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleUniswapV2Pair.constructor(address,address,address)._token1 (contracts/amm/TempleUniswapV2Pair.sol#67) lacks a zero-check on :\n\t\t- token1 = _token1 (contracts/amm/TempleUniswapV2Pair.sol#70)\n", + "markdown": "[TempleUniswapV2Pair.constructor(address,address,address)._token1](contracts/amm/TempleUniswapV2Pair.sol#L67) lacks a zero-check on :\n\t\t- [token1 = _token1](contracts/amm/TempleUniswapV2Pair.sol#L70)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L67", + "id": "690db18543951330bfe14086929ed1a80aa7c5c43d413a52b921411451479889", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_router", + "source_mapping": { + "start": 2904, + "length": 15, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 74 + ], + "starting_column": 24, + "ending_column": 39 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setRouter", + "source_mapping": { + "start": 2885, + "length": 140, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setRouter(address)" + } + } + } + }, + { + "type": "node", + "name": "router = _router", + "source_mapping": { + "start": 3002, + "length": 16, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 76 + ], + "starting_column": 9, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setRouter", + "source_mapping": { + "start": 2885, + "length": 140, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setRouter(address)" + } + } + } } - }, - "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" - } - }, - { - "type": "node", - "name": "requiresUpdate[i] = farmingPool.shares(address(vaults[i])) != vaults[i].targetRevenueShare()", - "source_mapping": { - "start": 3233, - "length": 92, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 13, - "ending_column": 105 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "requiresRebalance", - "source_mapping": { - "start": 2821, - "length": 553, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" + ], + "description": "TempleUniswapV2Pair.setRouter(address)._router (contracts/amm/TempleUniswapV2Pair.sol#74) lacks a zero-check on :\n\t\t- router = _router (contracts/amm/TempleUniswapV2Pair.sol#76)\n", + "markdown": "[TempleUniswapV2Pair.setRouter(address)._router](contracts/amm/TempleUniswapV2Pair.sol#L74) lacks a zero-check on :\n\t\t- [router = _router](contracts/amm/TempleUniswapV2Pair.sol#L76)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L74", + "id": "65b7f26867d221829e7395a702a30581f77ebb909c900aa9dc269f7dd15923d0", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_recipient", + "source_mapping": { + "start": 1683, + "length": 18, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 48 + ], + "starting_column": 34, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setRewardsRecipient", + "source_mapping": { + "start": 1654, + "length": 179, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 48, + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setRewardsRecipient(address)" + } + } + } + }, + { + "type": "node", + "name": "rewardsRecipient = _recipient", + "source_mapping": { + "start": 1750, + "length": 29, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 49 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setRewardsRecipient", + "source_mapping": { + "start": 1654, + "length": 179, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 48, + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setRewardsRecipient(address)" + } + } + } } - } - } - } - ], - "description": "OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue) (contracts/core/OpsManagerLib.sol#79-95) has external calls inside a loop: requiresUpdate[i] = farmingPool.shares(address(vaults[i])) != vaults[i].targetRevenueShare() (contracts/core/OpsManagerLib.sol#91)\n", - "markdown": "[OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue)](contracts/core/OpsManagerLib.sol#L79-L95) has external calls inside a loop: [requiresUpdate[i] = farmingPool.shares(address(vaults[i])) != vaults[i].targetRevenueShare()](contracts/core/OpsManagerLib.sol#L91)\n", - "first_markdown_element": "contracts/core/OpsManagerLib.sol#L79-L95", - "id": "291eba1d32cb690e10f4480f7b32b2bae6d005ffbf40558ffd08cf8b0ce6ee4d", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "updateExposureReval", - "source_mapping": { - "start": 3380, - "length": 681, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "AuraStaking.setRewardsRecipient(address)._recipient (contracts/amo/AuraStaking.sol#48) lacks a zero-check on :\n\t\t- rewardsRecipient = _recipient (contracts/amo/AuraStaking.sol#49)\n", + "markdown": "[AuraStaking.setRewardsRecipient(address)._recipient](contracts/amo/AuraStaking.sol#L48) lacks a zero-check on :\n\t\t- [rewardsRecipient = _recipient](contracts/amo/AuraStaking.sol#L49)\n", + "first_markdown_element": "contracts/amo/AuraStaking.sol#L48", + "id": "5563fec2719988c18a09b1c9b98748a0700c5a09c84dd2f6ec51e7b0796b0c80", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_feeCollector", + "source_mapping": { + "start": 4831, + "length": 21, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 113 + ], + "starting_column": 9, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 4519, + "length": 995, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address,address,address,address,address,uint64,bytes32,address,uint256)" + } + } + } + }, + { + "type": "node", + "name": "feeCollector = _feeCollector", + "source_mapping": { + "start": 5312, + "length": 28, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 123 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 4519, + "length": 995, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address,address,address,address,address,uint64,bytes32,address,uint256)" + } + } + } } - }, - "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" - } - }, - { - "type": "node", - "name": "exposure = pools[exposureTokens[i]].exposure()", - "source_mapping": { - "start": 3725, - "length": 55, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [101], - "starting_column": 13, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateExposureReval", - "source_mapping": { - "start": 3380, - "length": 681, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + ], + "description": "Ramos.constructor(address,address,address,address,address,address,address,uint64,bytes32,address,uint256)._feeCollector (contracts/amo/Ramos.sol#113) lacks a zero-check on :\n\t\t- feeCollector = _feeCollector (contracts/amo/Ramos.sol#123)\n", + "markdown": "[Ramos.constructor(address,address,address,address,address,address,address,uint64,bytes32,address,uint256)._feeCollector](contracts/amo/Ramos.sol#L113) lacks a zero-check on :\n\t\t- [feeCollector = _feeCollector](contracts/amo/Ramos.sol#L123)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L113", + "id": "d859e385f8bd8eca35f31a74169347836938cb1a82d4c8321f358ad5363d6ed4", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_amo", + "source_mapping": { + "start": 1614, + "length": 12, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 41 + ], + "starting_column": 7, + "ending_column": 19 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1451, + "length": 622, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerPoolHelper", + "source_mapping": { + "start": 739, + "length": 19014, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address,address,address,address,uint64,bytes32)" + } + } + } + }, + { + "type": "node", + "name": "amo = _amo", + "source_mapping": { + "start": 1988, + "length": 10, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 51 + ], + "starting_column": 7, + "ending_column": 17 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1451, + "length": 622, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "BalancerPoolHelper", + "source_mapping": { + "start": 739, + "length": 19014, + "filename_relative": "contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/helpers/BalancerPoolHelper.sol", + "filename_short": "contracts/amo/helpers/BalancerPoolHelper.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,address,address,address,address,uint64,bytes32)" + } + } + } } - } - } - } - ], - "description": "OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue)) (contracts/core/OpsManagerLib.sol#97-109) has external calls inside a loop: exposure = pools[exposureTokens[i]].exposure() (contracts/core/OpsManagerLib.sol#101)\n", - "markdown": "[OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))](contracts/core/OpsManagerLib.sol#L97-L109) has external calls inside a loop: [exposure = pools[exposureTokens[i]].exposure()](contracts/core/OpsManagerLib.sol#L101)\n", - "first_markdown_element": "contracts/core/OpsManagerLib.sol#L97-L109", - "id": "29cef7ed2793cf3d146be2fdec55418a2cdf263801d54510013749346bac88f3", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "updateExposureReval", - "source_mapping": { - "start": 3380, - "length": 681, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "BalancerPoolHelper.constructor(address,address,address,address,address,address,uint64,bytes32)._amo (contracts/amo/helpers/BalancerPoolHelper.sol#41) lacks a zero-check on :\n\t\t- amo = _amo (contracts/amo/helpers/BalancerPoolHelper.sol#51)\n", + "markdown": "[BalancerPoolHelper.constructor(address,address,address,address,address,address,uint64,bytes32)._amo](contracts/amo/helpers/BalancerPoolHelper.sol#L41) lacks a zero-check on :\n\t\t- [amo = _amo](contracts/amo/helpers/BalancerPoolHelper.sol#L51)\n", + "first_markdown_element": "contracts/amo/helpers/BalancerPoolHelper.sol#L41", + "id": "1a4d31b221d02b3c425c477d2b7e4c6dc1e41557697509c8e152170c2f1f7986", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_fundsOwner", + "source_mapping": { + "start": 3149, + "length": 19, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 72 + ], + "starting_column": 9, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 3065, + "length": 1117, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OtcOffer", + "source_mapping": { + "start": 847, + "length": 6468, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(address,address,address,uint256,OtcOffer.OfferPricingToken,uint128,uint128)" + } + } + } + }, + { + "type": "node", + "name": "fundsOwner = _fundsOwner", + "source_mapping": { + "start": 3444, + "length": 24, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 80 + ], + "starting_column": 9, + "ending_column": 33 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 3065, + "length": 1117, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OtcOffer", + "source_mapping": { + "start": 847, + "length": 6468, + "filename_relative": "contracts/core/OtcOffer.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OtcOffer.sol", + "filename_short": "contracts/core/OtcOffer.sol", + "is_dependency": false, + "lines": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(address,address,address,uint256,OtcOffer.OfferPricingToken,uint128,uint128)" + } + } + } } - }, - "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" - } - }, - { - "type": "node", - "name": "currentReval = exposure.reval()", - "source_mapping": { - "start": 3794, - "length": 39, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [102], - "starting_column": 13, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateExposureReval", - "source_mapping": { - "start": 3380, - "length": 681, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + ], + "description": "OtcOffer.constructor(address,address,address,uint256,OtcOffer.OfferPricingToken,uint128,uint128)._fundsOwner (contracts/core/OtcOffer.sol#72) lacks a zero-check on :\n\t\t- fundsOwner = _fundsOwner (contracts/core/OtcOffer.sol#80)\n", + "markdown": "[OtcOffer.constructor(address,address,address,uint256,OtcOffer.OfferPricingToken,uint128,uint128)._fundsOwner](contracts/core/OtcOffer.sol#L72) lacks a zero-check on :\n\t\t- [fundsOwner = _fundsOwner](contracts/core/OtcOffer.sol#L80)\n", + "first_markdown_element": "contracts/core/OtcOffer.sol#L72", + "id": "318c72045beea63d39db91e2c64959d93dbfe0e966ec4e74e6cbf32f20a24e68", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_gnosisSafeWallet", + "source_mapping": { + "start": 1642, + "length": 25, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 41 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1477, + "length": 459, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,string,address,address,address)" + } + } + } + }, + { + "type": "node", + "name": "gnosisSafeWallet = _gnosisSafeWallet", + "source_mapping": { + "start": 1813, + "length": 36, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 44 + ], + "starting_column": 9, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1477, + "length": 459, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(address,address,string,address,address,address)" + } + } + } } - } - } - } - ], - "description": "OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue)) (contracts/core/OpsManagerLib.sol#97-109) has external calls inside a loop: currentReval = exposure.reval() (contracts/core/OpsManagerLib.sol#102)\n", - "markdown": "[OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))](contracts/core/OpsManagerLib.sol#L97-L109) has external calls inside a loop: [currentReval = exposure.reval()](contracts/core/OpsManagerLib.sol#L102)\n", - "first_markdown_element": "contracts/core/OpsManagerLib.sol#L97-L109", - "id": "4b9ed20c5dffb0bb937e8e35bc5da6f0e0de33bda4b92ca4b5f843554466cbbc", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "updateExposureReval", - "source_mapping": { - "start": 3380, - "length": 681, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "GnosisStrategy.constructor(address,address,string,address,address,address)._gnosisSafeWallet (contracts/v2/strategies/GnosisStrategy.sol#41) lacks a zero-check on :\n\t\t- gnosisSafeWallet = _gnosisSafeWallet (contracts/v2/strategies/GnosisStrategy.sol#44)\n", + "markdown": "[GnosisStrategy.constructor(address,address,string,address,address,address)._gnosisSafeWallet](contracts/v2/strategies/GnosisStrategy.sol#L41) lacks a zero-check on :\n\t\t- [gnosisSafeWallet = _gnosisSafeWallet](contracts/v2/strategies/GnosisStrategy.sol#L44)\n", + "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L41", + "id": "35341096e7cc1cb2d71fe6962d37434197ec4866db8dda0c2c8cd05c17585e33", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_implementation", + "source_mapping": { + "start": 1224, + "length": 23, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 40 + ], + "starting_column": 17, + "ending_column": 40 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1212, + "length": 210, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 40, + 41, + 42, + 43, + 44 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(address,uint16)" + } + } + } + }, + { + "type": "node", + "name": "templeTeamPaymentsImplementation = _implementation", + "source_mapping": { + "start": 1282, + "length": 50, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 41 + ], + "starting_column": 9, + "ending_column": 59 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1212, + "length": 210, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 40, + 41, + 42, + 43, + 44 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(address,uint16)" + } + } + } } - }, - "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" - } - }, - { - "type": "node", - "name": "exposure.decreaseReval(currentReval - revals[i])", - "source_mapping": { - "start": 3895, - "length": 48, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [104], - "starting_column": 17, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateExposureReval", - "source_mapping": { - "start": 3380, - "length": 681, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + ], + "description": "TempleTeamPaymentsFactory.constructor(address,uint16)._implementation (contracts/admin/TempleTeamPaymentsFactory.sol#40) lacks a zero-check on :\n\t\t- templeTeamPaymentsImplementation = _implementation (contracts/admin/TempleTeamPaymentsFactory.sol#41)\n", + "markdown": "[TempleTeamPaymentsFactory.constructor(address,uint16)._implementation](contracts/admin/TempleTeamPaymentsFactory.sol#L40) lacks a zero-check on :\n\t\t- [templeTeamPaymentsImplementation = _implementation](contracts/admin/TempleTeamPaymentsFactory.sol#L41)\n", + "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L40", + "id": "da87c5c8c1b8544472d505a239a86c8fd5eef6af865588f2c95eaae614f5b72a", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_defendStable", + "source_mapping": { + "start": 1200, + "length": 22, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 40 + ], + "starting_column": 13, + "ending_column": 35 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1091, + "length": 271, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(TempleERC20Token,ITreasuryIV,address)" + } + } + } + }, + { + "type": "node", + "name": "defendStable = _defendStable", + "source_mapping": { + "start": 1326, + "length": 29, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 45 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1091, + "length": 271, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(TempleERC20Token,ITreasuryIV,address)" + } + } + } } - } - } - } - ], - "description": "OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue)) (contracts/core/OpsManagerLib.sol#97-109) has external calls inside a loop: exposure.decreaseReval(currentReval - revals[i]) (contracts/core/OpsManagerLib.sol#104)\n", - "markdown": "[OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))](contracts/core/OpsManagerLib.sol#L97-L109) has external calls inside a loop: [exposure.decreaseReval(currentReval - revals[i])](contracts/core/OpsManagerLib.sol#L104)\n", - "first_markdown_element": "contracts/core/OpsManagerLib.sol#L97-L109", - "id": "2a8d232e2a9bf6e56bf39af5ffd6e5e36613e5a9aa77a6691551c45c0092abf8", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "updateExposureReval", - "source_mapping": { - "start": 3380, - "length": 681, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleStableAMMRouter.constructor(TempleERC20Token,ITreasuryIV,address)._defendStable (contracts/amm/TempleStableAMMRouter.sol#40) lacks a zero-check on :\n\t\t- defendStable = _defendStable (contracts/amm/TempleStableAMMRouter.sol#45)\n", + "markdown": "[TempleStableAMMRouter.constructor(TempleERC20Token,ITreasuryIV,address)._defendStable](contracts/amm/TempleStableAMMRouter.sol#L40) lacks a zero-check on :\n\t\t- [defendStable = _defendStable](contracts/amm/TempleStableAMMRouter.sol#L45)\n", + "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L40", + "id": "8e8b46a3e001386612a0920cae43f3178af46f175ae977aa5f36adc5662d1cda", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_defendStable", + "source_mapping": { + "start": 1632, + "length": 21, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 56 + ], + "starting_column": 30, + "ending_column": 51 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setDefendStable", + "source_mapping": { + "start": 1607, + "length": 112, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setDefendStable(address)" + } + } + } + }, + { + "type": "node", + "name": "defendStable = _defendStable", + "source_mapping": { + "start": 1684, + "length": 28, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 57 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setDefendStable", + "source_mapping": { + "start": 1607, + "length": 112, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setDefendStable(address)" + } + } + } } - }, - "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" - } - }, - { - "type": "node", - "name": "exposure.increaseReval(revals[i] - currentReval)", - "source_mapping": { - "start": 3982, - "length": 48, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [106], - "starting_column": 17, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "updateExposureReval", - "source_mapping": { - "start": 3380, - "length": 681, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManagerLib", - "source_mapping": { - "start": 158, - "length": 3905, - "filename_relative": "contracts/core/OpsManagerLib.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", - "filename_short": "contracts/core/OpsManagerLib.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + ], + "description": "TempleStableAMMRouter.setDefendStable(address)._defendStable (contracts/amm/TempleStableAMMRouter.sol#56) lacks a zero-check on :\n\t\t- defendStable = _defendStable (contracts/amm/TempleStableAMMRouter.sol#57)\n", + "markdown": "[TempleStableAMMRouter.setDefendStable(address)._defendStable](contracts/amm/TempleStableAMMRouter.sol#L56) lacks a zero-check on :\n\t\t- [defendStable = _defendStable](contracts/amm/TempleStableAMMRouter.sol#L57)\n", + "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L56", + "id": "de02254c0f567ff1a6e8223d4826abf485c07990091f962338f7c0fa067431d5", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_vaultedTempleAccount", + "source_mapping": { + "start": 2796, + "length": 29, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 69 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2647, + "length": 819, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)" + } + } + } + }, + { + "type": "node", + "name": "vaultedTempleAccount = _vaultedTempleAccount", + "source_mapping": { + "start": 3167, + "length": 44, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 78 + ], + "starting_column": 9, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 2647, + "length": 819, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)" + } + } + } } - } - } - } - ], - "description": "OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue)) (contracts/core/OpsManagerLib.sol#97-109) has external calls inside a loop: exposure.increaseReval(revals[i] - currentReval) (contracts/core/OpsManagerLib.sol#106)\n", - "markdown": "[OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))](contracts/core/OpsManagerLib.sol#L97-L109) has external calls inside a loop: [exposure.increaseReval(revals[i] - currentReval)](contracts/core/OpsManagerLib.sol#L106)\n", - "first_markdown_element": "contracts/core/OpsManagerLib.sol#L97-L109", - "id": "02b2b95f67586f3365a9cc8e6b95fd4d48a424694b15f84a5b362f195ca5b007", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "redeemExposures", - "source_mapping": { - "start": 4724, - "length": 251, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [117, 118, 119, 120, 121, 122, 123], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Vault.constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)._vaultedTempleAccount (contracts/core/Vault.sol#69) lacks a zero-check on :\n\t\t- vaultedTempleAccount = _vaultedTempleAccount (contracts/core/Vault.sol#78)\n", + "markdown": "[Vault.constructor(string,string,IERC20,Exposure,address,uint256,uint256,Rational,JoiningFee,uint256)._vaultedTempleAccount](contracts/core/Vault.sol#L69) lacks a zero-check on :\n\t\t- [vaultedTempleAccount = _vaultedTempleAccount](contracts/core/Vault.sol#L78)\n", + "first_markdown_element": "contracts/core/Vault.sol#L69", + "id": "222c440a9dfe634640e1dbd4fff56612fe2321415f49dc4ec16114fa6ec260ed", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "variable", + "name": "_templeExposure", + "source_mapping": { + "start": 1380, + "length": 23, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 39 + ], + "starting_column": 38, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1347, + "length": 143, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 39, + 40, + 41, + 42 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultedTemple", + "source_mapping": { + "start": 1207, + "length": 1005, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(IERC20,address)" + } + } + } + }, + { + "type": "node", + "name": "templeExposure = _templeExposure", + "source_mapping": { + "start": 1451, + "length": 32, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 41 + ], + "starting_column": 9, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1347, + "length": 143, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 39, + 40, + 41, + 42 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultedTemple", + "source_mapping": { + "start": 1207, + "length": 1005, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(IERC20,address)" + } + } + } } - }, - "signature": "redeemExposures(Exposure[])" - } - }, - { - "type": "node", - "name": "exposures[i].redeem()", - "source_mapping": { - "start": 4868, - "length": 21, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [119], - "starting_column": 13, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "redeemExposures", - "source_mapping": { - "start": 4724, - "length": 251, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [117, 118, 119, 120, 121, 122, 123], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "redeemExposures(Exposure[])" + ], + "description": "VaultedTemple.constructor(IERC20,address)._templeExposure (contracts/core/VaultedTemple.sol#39) lacks a zero-check on :\n\t\t- templeExposure = _templeExposure (contracts/core/VaultedTemple.sol#41)\n", + "markdown": "[VaultedTemple.constructor(IERC20,address)._templeExposure](contracts/core/VaultedTemple.sol#L39) lacks a zero-check on :\n\t\t- [templeExposure = _templeExposure](contracts/core/VaultedTemple.sol#L41)\n", + "first_markdown_element": "contracts/core/VaultedTemple.sol#L39", + "id": "2fcc44b40158b30b8b0d1614ffa673ffe544de75b922fdda079eea29dca64415", + "check": "missing-zero-check", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "getReward", + "source_mapping": { + "start": 4291, + "length": 657, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "getReward(bool)" + } + }, + { + "type": "node", + "name": "balance = rewardToken.balanceOf(address(this))", + "source_mapping": { + "start": 4735, + "length": 54, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 118 + ], + "starting_column": 17, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "getReward", + "source_mapping": { + "start": 4291, + "length": 657, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "getReward(bool)" + } + } + } } - } - } - } - ], - "description": "Vault.redeemExposures(Exposure[]) (contracts/core/Vault.sol#117-123) has external calls inside a loop: exposures[i].redeem() (contracts/core/Vault.sol#119)\n", - "markdown": "[Vault.redeemExposures(Exposure[])](contracts/core/Vault.sol#L117-L123) has external calls inside a loop: [exposures[i].redeem()](contracts/core/Vault.sol#L119)\n", - "first_markdown_element": "contracts/core/Vault.sol#L117-L123", - "id": "fb0eb1701c9d5262a84b7e53dfc4632c0ca1d6292b4e39447df4f40eaf369003", - "check": "calls-loop", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "AuraStaking.getReward(bool) (contracts/amo/AuraStaking.sol#110-125) has external calls inside a loop: balance = rewardToken.balanceOf(address(this)) (contracts/amo/AuraStaking.sol#118)\n", + "markdown": "[AuraStaking.getReward(bool)](contracts/amo/AuraStaking.sol#L110-L125) has external calls inside a loop: [balance = rewardToken.balanceOf(address(this))](contracts/amo/AuraStaking.sol#L118)\n", + "first_markdown_element": "contracts/amo/AuraStaking.sol#L110-L125", + "id": "dab641382da7356da589d9f335e183a99e5e9d0e41793c5d48158d07f1c57272", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + }, + { + "type": "node", + "name": "_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)", + "source_mapping": { + "start": 12499, + "length": 64, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 296 + ], + "starting_column": 13, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + } + } } - }, - "signature": "burn(address)" - } - }, - { - "type": "node", - "name": "_safeTransfer(_token0,to,amount0)", - "source_mapping": { - "start": 6213, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [131], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" + ], + "description": "TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319) has external calls inside a loop: _outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy) (contracts/v2/TreasuryReservesVault.sol#296)\n", + "markdown": "[TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319) has external calls inside a loop: [_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)](contracts/v2/TreasuryReservesVault.sol#L296)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L283-L319", + "id": "319ffc2aa8a4b776f15de07870a0d4d5abe0125bc3d87d10222a70895adf8bba", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "strategyBalanceSheet", + "source_mapping": { + "start": 19539, + "length": 1196, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "strategyBalanceSheet(address)" + } + }, + { + "type": "node", + "name": "dTokenBalances[i] = ITempleStrategy.AssetBalance(_token,borrowTokens[IERC20(_token)].dToken.balanceOf(strategy))", + "source_mapping": { + "start": 20490, + "length": 113, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 464 + ], + "starting_column": 13, + "ending_column": 126 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "strategyBalanceSheet", + "source_mapping": { + "start": 19539, + "length": 1196, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "strategyBalanceSheet(address)" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" + ], + "description": "TreasuryReservesVault.strategyBalanceSheet(address) (contracts/v2/TreasuryReservesVault.sol#447-467) has external calls inside a loop: dTokenBalances[i] = ITempleStrategy.AssetBalance(_token,borrowTokens[IERC20(_token)].dToken.balanceOf(strategy)) (contracts/v2/TreasuryReservesVault.sol#464)\n", + "markdown": "[TreasuryReservesVault.strategyBalanceSheet(address)](contracts/v2/TreasuryReservesVault.sol#L447-L467) has external calls inside a loop: [dTokenBalances[i] = ITempleStrategy.AssetBalance(_token,borrowTokens[IERC20(_token)].dToken.balanceOf(strategy))](contracts/v2/TreasuryReservesVault.sol#L464)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L447-L467", + "id": "20bcad4f9996938c51c34e640ba88b7c6f2e553a9bfd34b0e170bf1b1904292b", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "latestAssetBalances", + "source_mapping": { + "start": 6069, + "length": 754, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "latestAssetBalances()" + } + }, + { + "type": "node", + "name": "_gnosisBalance = (IERC20(_asset).balanceOf(gnosisSafeWallet) + IERC20(_asset).balanceOf(address(this)))", + "source_mapping": { + "start": 6422, + "length": 250, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 13, + "ending_column": 18 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "latestAssetBalances", + "source_mapping": { + "start": 6069, + "length": 754, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "latestAssetBalances()" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_safeTransfer(_token1,to,amount1)", - "source_mapping": { - "start": 6258, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [132], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" + ], + "description": "GnosisStrategy.latestAssetBalances() (contracts/v2/strategies/GnosisStrategy.sol#155-177) has external calls inside a loop: _gnosisBalance = (IERC20(_asset).balanceOf(gnosisSafeWallet) + IERC20(_asset).balanceOf(address(this))) (contracts/v2/strategies/GnosisStrategy.sol#165-170)\n", + "markdown": "[GnosisStrategy.latestAssetBalances()](contracts/v2/strategies/GnosisStrategy.sol#L155-L177) has external calls inside a loop: [_gnosisBalance = (IERC20(_asset).balanceOf(gnosisSafeWallet) + IERC20(_asset).balanceOf(address(this)))](contracts/v2/strategies/GnosisStrategy.sol#L165-L170)\n", + "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L155-L177", + "id": "303fe06184eefb239bc471a22808ec3f7ce192673117af8e628268271f896623", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "addRevenue", + "source_mapping": { + "start": 3615, + "length": 351, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "addRevenue(IERC20[],uint256[])" + } + }, + { + "type": "node", + "name": "pools[exposureTokens[i]].addRevenue(amounts[i])", + "source_mapping": { + "start": 3902, + "length": 47, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 114 + ], + "starting_column": 13, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addRevenue", + "source_mapping": { + "start": 3615, + "length": 351, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "addRevenue(IERC20[],uint256[])" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" + ], + "description": "OpsManager.addRevenue(IERC20[],uint256[]) (contracts/core/OpsManager.sol#110-116) has external calls inside a loop: pools[exposureTokens[i]].addRevenue(amounts[i]) (contracts/core/OpsManager.sol#114)\n", + "markdown": "[OpsManager.addRevenue(IERC20[],uint256[])](contracts/core/OpsManager.sol#L110-L116) has external calls inside a loop: [pools[exposureTokens[i]].addRevenue(amounts[i])](contracts/core/OpsManager.sol#L114)\n", + "first_markdown_element": "contracts/core/OpsManager.sol#L110-L116", + "id": "5665a1327173172c99a94790114d41a7287eb453518635edd48056ecba261fa4", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "increaseVaultTemple", + "source_mapping": { + "start": 4395, + "length": 447, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "increaseVaultTemple(Vault[],uint256[])" + } + }, + { + "type": "node", + "name": "templeExposure.mint(address(vaults[i]),amountsTemple[i])", + "source_mapping": { + "start": 4768, + "length": 57, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 135 + ], + "starting_column": 13, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "increaseVaultTemple", + "source_mapping": { + "start": 4395, + "length": 447, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "increaseVaultTemple(Vault[],uint256[])" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_safeTransfer(_token0,to,amount0)", - "source_mapping": { - "start": 6213, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [131], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" + ], + "description": "OpsManager.increaseVaultTemple(Vault[],uint256[]) (contracts/core/OpsManager.sol#130-137) has external calls inside a loop: templeExposure.mint(address(vaults[i]),amountsTemple[i]) (contracts/core/OpsManager.sol#135)\n", + "markdown": "[OpsManager.increaseVaultTemple(Vault[],uint256[])](contracts/core/OpsManager.sol#L130-L137) has external calls inside a loop: [templeExposure.mint(address(vaults[i]),amountsTemple[i])](contracts/core/OpsManager.sol#L135)\n", + "first_markdown_element": "contracts/core/OpsManager.sol#L130-L137", + "id": "73ad477fce052d6df52f4050312b09c115d39ab6a4163386fdb2d902cdf8d2a5", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "liquidateExposures", + "source_mapping": { + "start": 5038, + "length": 531, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "liquidateExposures(Vault[],IERC20[])" + } + }, + { + "type": "node", + "name": "exposures[i] = pools[exposureTokens[i]].exposure()", + "source_mapping": { + "start": 5294, + "length": 50, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 148 + ], + "starting_column": 13, + "ending_column": 63 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "liquidateExposures", + "source_mapping": { + "start": 5038, + "length": 531, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "liquidateExposures(Vault[],IERC20[])" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_safeTransfer(_token1,to,amount1)", - "source_mapping": { - "start": 6258, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [132], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 6426, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [136], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "price0CumulativeLast" - } - }, - { - "type": "node", - "name": "price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed", - "source_mapping": { - "start": 3587, - "length": 88, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [86], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "price0CumulativeLast" - } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 6426, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [136], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "price1CumulativeLast" - } - }, - { - "type": "node", - "name": "price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed", - "source_mapping": { - "start": 3689, - "length": 88, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [87], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "price1CumulativeLast" - } - } - ], - "description": "Reentrancy in TempleUniswapV2Pair.burn(address) (contracts/amm/TempleUniswapV2Pair.sol#118-138):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0) (contracts/amm/TempleUniswapV2Pair.sol#131)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1) (contracts/amm/TempleUniswapV2Pair.sol#132)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\tState variables written after the call(s):\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed (contracts/amm/TempleUniswapV2Pair.sol#86)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed (contracts/amm/TempleUniswapV2Pair.sol#87)\n", - "markdown": "Reentrancy in [TempleUniswapV2Pair.burn(address)](contracts/amm/TempleUniswapV2Pair.sol#L118-L138):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0)](contracts/amm/TempleUniswapV2Pair.sol#L131)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1)](contracts/amm/TempleUniswapV2Pair.sol#L132)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\tState variables written after the call(s):\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed](contracts/amm/TempleUniswapV2Pair.sol#L86)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed](contracts/amm/TempleUniswapV2Pair.sol#L87)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L118-L138", - "id": "d6f7e9923264688e14af684f9180e869a190d782f4a8ab55d1efa22ac6b2ec72", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - }, - { - "type": "node", - "name": "_safeTransfer(_token0,to,amount0Out)", - "source_mapping": { - "start": 7388, - "length": 38, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [153], - "starting_column": 29, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_safeTransfer(_token1,to,amount1Out)", - "source_mapping": { - "start": 7490, - "length": 38, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [154], - "starting_column": 29, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)", - "source_mapping": { - "start": 7593, - "length": 76, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [155], - "starting_column": 30, - "ending_column": 106 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_safeTransfer(_token0,to,amount0Out)", - "source_mapping": { - "start": 7388, - "length": 38, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [153], - "starting_column": 29, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_safeTransfer(_token1,to,amount1Out)", - "source_mapping": { - "start": 7490, - "length": 38, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [154], - "starting_column": 29, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)", - "source_mapping": { - "start": 7593, - "length": 76, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [155], - "starting_column": 30, - "ending_column": 106 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 8457, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [168], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "price0CumulativeLast" - } - }, - { - "type": "node", - "name": "price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed", - "source_mapping": { - "start": 3587, - "length": 88, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [86], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "price0CumulativeLast" - } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 8457, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [168], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "price1CumulativeLast" - } - }, - { - "type": "node", - "name": "price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed", - "source_mapping": { - "start": 3689, - "length": 88, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [87], - "starting_column": 13, - "ending_column": 101 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "price1CumulativeLast" - } - } - ], - "description": "Reentrancy in TempleUniswapV2Pair.swap(uint256,uint256,address,bytes) (contracts/amm/TempleUniswapV2Pair.sol#141-170):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0Out) (contracts/amm/TempleUniswapV2Pair.sol#153)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1Out) (contracts/amm/TempleUniswapV2Pair.sol#154)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data) (contracts/amm/TempleUniswapV2Pair.sol#155)\n\tState variables written after the call(s):\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed (contracts/amm/TempleUniswapV2Pair.sol#86)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed (contracts/amm/TempleUniswapV2Pair.sol#87)\n", - "markdown": "Reentrancy in [TempleUniswapV2Pair.swap(uint256,uint256,address,bytes)](contracts/amm/TempleUniswapV2Pair.sol#L141-L170):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0Out)](contracts/amm/TempleUniswapV2Pair.sol#L153)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1Out)](contracts/amm/TempleUniswapV2Pair.sol#L154)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)](contracts/amm/TempleUniswapV2Pair.sol#L155)\n\tState variables written after the call(s):\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed](contracts/amm/TempleUniswapV2Pair.sol#L86)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed](contracts/amm/TempleUniswapV2Pair.sol#L87)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L141-L170", - "id": "4009158fb72c6a7f799d45778765abe734e526aff7ec82c4bb4384d474895f3f", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, - 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - }, - { - "type": "node", - "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", - "source_mapping": { - "start": 7012, - "length": 118, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [173, 174, 175, 176, 177], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", - "source_mapping": { - "start": 7012, - "length": 118, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [173, 174, 175, 176, 177], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "totalCollateral -= amount", - "source_mapping": { - "start": 7285, - "length": 25, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [181], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "totalCollateral" - } - } - ], - "description": "Reentrancy in TempleLineOfCredit.removeCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#166-190):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#173-177)\n\tState variables written after the call(s):\n\t- totalCollateral -= amount (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#181)\n", - "markdown": "Reentrancy in [TempleLineOfCredit.removeCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L173-L177)\n\tState variables written after the call(s):\n\t- [totalCollateral -= amount](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L181)\n", - "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190", - "id": "7e54b77ff600dbf6c2607432f645013fef59227e4ff7c91d2c9c62ef8ddf1980", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "createExposure", - "source_mapping": { - "start": 1322, - "length": 415, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createExposure(string,string,IERC20)" - } - }, - { - "type": "node", - "name": "exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)", - "source_mapping": { - "start": 1526, - "length": 81, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [51], - "starting_column": 9, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "createExposure", - "source_mapping": { - "start": 1322, - "length": 415, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createExposure(string,string,IERC20)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)", - "source_mapping": { - "start": 1526, - "length": 81, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [51], - "starting_column": 9, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "createExposure", - "source_mapping": { - "start": 1322, - "length": 415, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createExposure(string,string,IERC20)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "revalTokens.push(address(revalToken))", - "source_mapping": { - "start": 1617, - "length": 37, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [52], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "createExposure", - "source_mapping": { - "start": 1322, - "length": 415, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createExposure(string,string,IERC20)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "revalTokens" - } - } - ], - "description": "Reentrancy in OpsManager.createExposure(string,string,IERC20) (contracts/core/OpsManager.sol#45-54):\n\tExternal calls:\n\t- exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools) (contracts/core/OpsManager.sol#51)\n\tState variables written after the call(s):\n\t- revalTokens.push(address(revalToken)) (contracts/core/OpsManager.sol#52)\n", - "markdown": "Reentrancy in [OpsManager.createExposure(string,string,IERC20)](contracts/core/OpsManager.sol#L45-L54):\n\tExternal calls:\n\t- [exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)](contracts/core/OpsManager.sol#L51)\n\tState variables written after the call(s):\n\t- [revalTokens.push(address(revalToken))](contracts/core/OpsManager.sol#L52)\n", - "first_markdown_element": "contracts/core/OpsManager.sol#L45-L54", - "id": "51556a077db66dfc3240e846360a26235f1360662907e56d0702b662359b5526", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - }, - { - "type": "node", - "name": "claimFor(account)", - "source_mapping": { - "start": 2441, - "length": 17, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [70], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3194, - "length": 56, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "claimFor(account)", - "source_mapping": { - "start": 2441, - "length": 17, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [70], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3194, - "length": 56, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "totalShares -= amount", - "source_mapping": { - "start": 2504, - "length": 21, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [73], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "totalShares" - } - } - ], - "description": "Reentrancy in TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#70)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tState variables written after the call(s):\n\t- totalShares -= amount (contracts/core/TreasuryFarmingRevenue.sol#73)\n", - "markdown": "Reentrancy in [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L70)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tState variables written after the call(s):\n\t- [totalShares -= amount](contracts/core/TreasuryFarmingRevenue.sol#L73)\n", - "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L69-L77", - "id": "0b0602eac2622c580688b404d63d57f1596371f95c0951d2b30d3754c6a94161", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - }, - { - "type": "node", - "name": "paymentContract.initialize(_token)", - "source_mapping": { - "start": 3274, - "length": 34, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [89], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "paymentContract.setAllocations(_dests,_allocations)", - "source_mapping": { - "start": 3318, - "length": 52, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [90], - "starting_column": 9, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "paymentContract.transferOwnership(msg.sender)", - "source_mapping": { - "start": 3381, - "length": 45, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [92], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)", - "source_mapping": { - "start": 3473, - "length": 165, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [95, 96, 97, 98, 99, 100], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "paymentContract.initialize(_token)", - "source_mapping": { - "start": 3274, - "length": 34, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [89], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "paymentContract.setAllocations(_dests,_allocations)", - "source_mapping": { - "start": 3318, - "length": 52, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [90], - "starting_column": 9, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "paymentContract.transferOwnership(msg.sender)", - "source_mapping": { - "start": 3381, - "length": 45, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [92], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)", - "source_mapping": { - "start": 3473, - "length": 165, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [95, 96, 97, 98, 99, 100], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "incrementEpoch(address(paymentContract),_totalFunding)", - "source_mapping": { - "start": 3649, - "length": 55, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [102], - "starting_column": 9, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "epochsFunded" - } - }, - { - "type": "node", - "name": "epochsFunded[lastPaidEpoch] = data", - "source_mapping": { - "start": 1734, - "length": 34, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [55], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "incrementEpoch", - "source_mapping": { - "start": 1428, - "length": 347, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "incrementEpoch(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "epochsFunded" - } - } - ], - "description": "Reentrancy in TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#79-112):\n\tExternal calls:\n\t- paymentContract.initialize(_token) (contracts/admin/TempleTeamPaymentsFactory.sol#89)\n\t- paymentContract.setAllocations(_dests,_allocations) (contracts/admin/TempleTeamPaymentsFactory.sol#90)\n\t- paymentContract.transferOwnership(msg.sender) (contracts/admin/TempleTeamPaymentsFactory.sol#92)\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#95-100)\n\tState variables written after the call(s):\n\t- incrementEpoch(address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#102)\n\t\t- epochsFunded[lastPaidEpoch] = data (contracts/admin/TempleTeamPaymentsFactory.sol#55)\n", - "markdown": "Reentrancy in [TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112):\n\tExternal calls:\n\t- [paymentContract.initialize(_token)](contracts/admin/TempleTeamPaymentsFactory.sol#L89)\n\t- [paymentContract.setAllocations(_dests,_allocations)](contracts/admin/TempleTeamPaymentsFactory.sol#L90)\n\t- [paymentContract.transferOwnership(msg.sender)](contracts/admin/TempleTeamPaymentsFactory.sol#L92)\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L95-L100)\n\tState variables written after the call(s):\n\t- [incrementEpoch(address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L102)\n\t\t- [epochsFunded[lastPaidEpoch] = data](contracts/admin/TempleTeamPaymentsFactory.sol#L55)\n", - "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112", - "id": "38547e1ee698a66798b081a9551aa0d534f4641810a5486cd31cdbdd25f55313", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "directPayouts", - "source_mapping": { - "start": 4101, - "length": 829, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "directPayouts(IERC20,address[],uint256[])" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)", - "source_mapping": { - "start": 4642, - "length": 59, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [133], - "starting_column": 13, - "ending_column": 72 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "directPayouts", - "source_mapping": { - "start": 4101, - "length": 829, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "directPayouts(IERC20,address[],uint256[])" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)", - "source_mapping": { - "start": 4642, - "length": 59, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [133], - "starting_column": 13, - "ending_column": 72 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "directPayouts", - "source_mapping": { - "start": 4101, - "length": 829, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "directPayouts(IERC20,address[],uint256[])" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "incrementEpoch(address(this),totalFunding)", - "source_mapping": { - "start": 4816, - "length": 43, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [140], - "starting_column": 9, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "directPayouts", - "source_mapping": { - "start": 4101, - "length": 829, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "directPayouts(IERC20,address[],uint256[])" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "epochsFunded" - } - }, - { - "type": "node", - "name": "epochsFunded[lastPaidEpoch] = data", - "source_mapping": { - "start": 1734, - "length": 34, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [55], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "incrementEpoch", - "source_mapping": { - "start": 1428, - "length": 347, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "incrementEpoch(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "epochsFunded" - } - }, - { - "type": "node", - "name": "incrementEpoch(address(this),totalFunding)", - "source_mapping": { - "start": 4816, - "length": 43, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [140], - "starting_column": 9, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "directPayouts", - "source_mapping": { - "start": 4101, - "length": 829, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "directPayouts(IERC20,address[],uint256[])" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "lastPaidEpoch" - } - }, - { - "type": "node", - "name": "data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++})", - "source_mapping": { - "start": 1542, - "length": 182, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [50, 51, 52, 53, 54], - "starting_column": 9, - "ending_column": 11 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "incrementEpoch", - "source_mapping": { - "start": 1428, - "length": 347, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "incrementEpoch(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "lastPaidEpoch" - } - } - ], - "description": "Reentrancy in TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[]) (contracts/admin/TempleTeamPaymentsFactory.sol#119-143):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,dest,value) (contracts/admin/TempleTeamPaymentsFactory.sol#133)\n\tState variables written after the call(s):\n\t- incrementEpoch(address(this),totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#140)\n\t\t- epochsFunded[lastPaidEpoch] = data (contracts/admin/TempleTeamPaymentsFactory.sol#55)\n\t- incrementEpoch(address(this),totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#140)\n\t\t- data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++}) (contracts/admin/TempleTeamPaymentsFactory.sol#50-54)\n", - "markdown": "Reentrancy in [TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[])](contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)](contracts/admin/TempleTeamPaymentsFactory.sol#L133)\n\tState variables written after the call(s):\n\t- [incrementEpoch(address(this),totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L140)\n\t\t- [epochsFunded[lastPaidEpoch] = data](contracts/admin/TempleTeamPaymentsFactory.sol#L55)\n\t- [incrementEpoch(address(this),totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L140)\n\t\t- [data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++})](contracts/admin/TempleTeamPaymentsFactory.sol#L50-L54)\n", - "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143", - "id": "e7d7cc7383e1682a576694bbc276f3a8cb1f5f6783434f8f5336ea3b0d9bf554", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - }, - { - "type": "node", - "name": "claimFor(account)", - "source_mapping": { - "start": 2073, - "length": 17, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [57], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3194, - "length": 56, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "claimFor(account)", - "source_mapping": { - "start": 2073, - "length": 17, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [57], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3194, - "length": 56, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "totalShares += amount", - "source_mapping": { - "start": 2136, - "length": 21, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [60], - "starting_column": 9, - "ending_column": 30 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - } - }, - "additional_fields": { - "underlying_type": "variables_written", - "variable_name": "totalShares" - } - } - ], - "description": "Reentrancy in TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#57)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tState variables written after the call(s):\n\t- totalShares += amount (contracts/core/TreasuryFarmingRevenue.sol#60)\n", - "markdown": "Reentrancy in [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L57)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tState variables written after the call(s):\n\t- [totalShares += amount](contracts/core/TreasuryFarmingRevenue.sol#L60)\n", - "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L56-L64", - "id": "842e91df89a71525a6459c0d1291885967545da62e3f06975364172343f78737", - "check": "reentrancy-benign", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - }, - { - "type": "node", - "name": "_safeTransfer(_token0,to,amount0)", - "source_mapping": { - "start": 6213, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [131], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_safeTransfer(_token1,to,amount1)", - "source_mapping": { - "start": 6258, - "length": 35, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [132], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "Burn(msg.sender,amount0,amount1,to)", - "source_mapping": { - "start": 6485, - "length": 43, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [137], - "starting_column": 9, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "Sync(reserve0,reserve1)", - "source_mapping": { - "start": 3918, - "length": 29, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [92], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 6426, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [136], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "burn", - "source_mapping": { - "start": 5241, - "length": 1294, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "burn(address)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleUniswapV2Pair.burn(address) (contracts/amm/TempleUniswapV2Pair.sol#118-138):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0) (contracts/amm/TempleUniswapV2Pair.sol#131)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1) (contracts/amm/TempleUniswapV2Pair.sol#132)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\tEvent emitted after the call(s):\n\t- Burn(msg.sender,amount0,amount1,to) (contracts/amm/TempleUniswapV2Pair.sol#137)\n\t- Sync(reserve0,reserve1) (contracts/amm/TempleUniswapV2Pair.sol#92)\n\t\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n", - "markdown": "Reentrancy in [TempleUniswapV2Pair.burn(address)](contracts/amm/TempleUniswapV2Pair.sol#L118-L138):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0)](contracts/amm/TempleUniswapV2Pair.sol#L131)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1)](contracts/amm/TempleUniswapV2Pair.sol#L132)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\tEvent emitted after the call(s):\n\t- [Burn(msg.sender,amount0,amount1,to)](contracts/amm/TempleUniswapV2Pair.sol#L137)\n\t- [Sync(reserve0,reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L92)\n\t\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L118-L138", - "id": "127a57c69604f2ba16f4cd02c712486dff1968238a1c69ead2035920584207c2", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - }, - { - "type": "node", - "name": "_safeTransfer(_token0,to,amount0Out)", - "source_mapping": { - "start": 7388, - "length": 38, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [153], - "starting_column": 29, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_safeTransfer(_token1,to,amount1Out)", - "source_mapping": { - "start": 7490, - "length": 38, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [154], - "starting_column": 29, - "ending_column": 67 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)", - "source_mapping": { - "start": 7593, - "length": 76, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [155], - "starting_column": 30, - "ending_column": 106 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "Swap(msg.sender,amount0In,amount1In,amount0Out,amount1Out,to)", - "source_mapping": { - "start": 8516, - "length": 71, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [169], - "starting_column": 9, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "Sync(reserve0,reserve1)", - "source_mapping": { - "start": 3918, - "length": 29, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [92], - "starting_column": 9, - "ending_column": 38 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "_update(balance0,balance1,_reserve0,_reserve1)", - "source_mapping": { - "start": 8457, - "length": 49, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [168], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "swap", - "source_mapping": { - "start": 6644, - "length": 1950, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "swap(uint256,uint256,address,bytes)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleUniswapV2Pair.swap(uint256,uint256,address,bytes) (contracts/amm/TempleUniswapV2Pair.sol#141-170):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0Out) (contracts/amm/TempleUniswapV2Pair.sol#153)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1Out) (contracts/amm/TempleUniswapV2Pair.sol#154)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data) (contracts/amm/TempleUniswapV2Pair.sol#155)\n\tEvent emitted after the call(s):\n\t- Swap(msg.sender,amount0In,amount1In,amount0Out,amount1Out,to) (contracts/amm/TempleUniswapV2Pair.sol#169)\n\t- Sync(reserve0,reserve1) (contracts/amm/TempleUniswapV2Pair.sol#92)\n\t\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n", - "markdown": "Reentrancy in [TempleUniswapV2Pair.swap(uint256,uint256,address,bytes)](contracts/amm/TempleUniswapV2Pair.sol#L141-L170):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0Out)](contracts/amm/TempleUniswapV2Pair.sol#L153)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1Out)](contracts/amm/TempleUniswapV2Pair.sol#L154)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)](contracts/amm/TempleUniswapV2Pair.sol#L155)\n\tEvent emitted after the call(s):\n\t- [Swap(msg.sender,amount0In,amount1In,amount0Out,amount1Out,to)](contracts/amm/TempleUniswapV2Pair.sol#L169)\n\t- [Sync(reserve0,reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L92)\n\t\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L141-L170", - "id": "702607b50ee9e5b85f6e9be980d2529af09be332237e0acb690cb814df52cb87", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_burnDToken", - "source_mapping": { - "start": 29999, - "length": 1179, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - }, - { - "type": "node", - "name": "_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)", - "source_mapping": { - "start": 30398, - "length": 71, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [688], - "starting_column": 9, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_burnDToken", - "source_mapping": { - "start": 29999, - "length": 1179, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "OpsManager.liquidateExposures(Vault[],IERC20[]) (contracts/core/OpsManager.sol#144-155) has external calls inside a loop: exposures[i] = pools[exposureTokens[i]].exposure() (contracts/core/OpsManager.sol#148)\n", + "markdown": "[OpsManager.liquidateExposures(Vault[],IERC20[])](contracts/core/OpsManager.sol#L144-L155) has external calls inside a loop: [exposures[i] = pools[exposureTokens[i]].exposure()](contracts/core/OpsManager.sol#L148)\n", + "first_markdown_element": "contracts/core/OpsManager.sol#L144-L155", + "id": "ead7d436da8a29569022b48ffddbfceb808c4dd315ce7ca9d743dc5226a168dc", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "liquidateExposures", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)", - "source_mapping": { - "start": 31081, - "length": 90, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [708], - "starting_column": 9, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_burnDToken", - "source_mapping": { - "start": 29999, - "length": 1179, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 5038, + "length": 531, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "liquidateExposures(Vault[],IERC20[])" + } + }, + { + "type": "node", + "name": "vaults[i_scope_0].redeemExposures(exposures)", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#677-709):\n\tExternal calls:\n\t- _burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount) (contracts/v2/TreasuryReservesVault.sol#688)\n\tEvent emitted after the call(s):\n\t- StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance) (contracts/v2/TreasuryReservesVault.sol#708)\n", - "markdown": "Reentrancy in [TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L677-L709):\n\tExternal calls:\n\t- [_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)](contracts/v2/TreasuryReservesVault.sol#L688)\n\tEvent emitted after the call(s):\n\t- [StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)](contracts/v2/TreasuryReservesVault.sol#L708)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L677-L709", - "id": "39b30f51cb8e0f3bb137afd7388e494f2a117088a846eb999e1fe7c8a4337328", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_doShutdown", - "source_mapping": { - "start": 12280, - "length": 502, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_doShutdown(bytes)" - } - }, - { - "type": "node", - "name": "(daiAvailable,sharesAvailable) = _checkpointDaiBalance()", - "source_mapping": { - "start": 12387, - "length": 74, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [295], - "starting_column": 9, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_doShutdown", - "source_mapping": { - "start": 12280, - "length": 502, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_doShutdown(bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "chi = pot.drip()", - "source_mapping": { - "start": 5566, - "length": 60, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_checkpointChi()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", - "source_mapping": { - "start": 12471, - "length": 45, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [296], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_doShutdown", - "source_mapping": { - "start": 12280, - "length": 502, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_doShutdown(bytes)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "pot.exit(sharesAmount)", - "source_mapping": { - "start": 11597, - "length": 22, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [279], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "daiJoin.exit(address(this),daiAmount)", - "source_mapping": { - "start": 11629, - "length": 38, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [280], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "DaiWithdrawn(daiAmount)", - "source_mapping": { - "start": 11677, - "length": 28, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [281], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", - "source_mapping": { - "start": 12471, - "length": 45, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [296], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_doShutdown", - "source_mapping": { - "start": 12280, - "length": 502, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_doShutdown(bytes)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in DsrBaseStrategy._doShutdown(bytes) (contracts/v2/strategies/DsrBaseStrategy.sol#293-303):\n\tExternal calls:\n\t- (daiAvailable,sharesAvailable) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#295)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#296)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\t\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#296)\n", - "markdown": "Reentrancy in [DsrBaseStrategy._doShutdown(bytes)](contracts/v2/strategies/DsrBaseStrategy.sol#L293-L303):\n\tExternal calls:\n\t- [(daiAvailable,sharesAvailable) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L295)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L296)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\t\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L296)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L293-L303", - "id": "2d01281faf7161866f00d8f2c914cd6f900f84c01032af46a90491363ac26414", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_dsrDeposit", - "source_mapping": { - "start": 8061, - "length": 349, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrDeposit(uint256)" - } - }, - { - "type": "node", - "name": "shares = _rdiv(amount,_checkpointChi())", - "source_mapping": { - "start": 8248, - "length": 48, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [204], - "starting_column": 9, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrDeposit", - "source_mapping": { - "start": 8061, - "length": 349, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "chi = pot.drip()", - "source_mapping": { - "start": 5566, - "length": 60, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_checkpointChi()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "DaiDeposited(amount)", - "source_mapping": { - "start": 8307, - "length": 25, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [206], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrDeposit", - "source_mapping": { - "start": 8061, - "length": 349, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in DsrBaseStrategy._dsrDeposit(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#201-209):\n\tExternal calls:\n\t- shares = _rdiv(amount,_checkpointChi()) (contracts/v2/strategies/DsrBaseStrategy.sol#204)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\tEvent emitted after the call(s):\n\t- DaiDeposited(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#206)\n", - "markdown": "Reentrancy in [DsrBaseStrategy._dsrDeposit(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L201-L209):\n\tExternal calls:\n\t- [shares = _rdiv(amount,_checkpointChi())](contracts/v2/strategies/DsrBaseStrategy.sol#L204)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\tEvent emitted after the call(s):\n\t- [DaiDeposited(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L206)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L201-L209", - "id": "d7b6d2a10c4c72fb8ed18e875155e8f19fb9578527302b34acf8ce0824782543", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - }, - { - "type": "node", - "name": "pot.exit(sharesAmount)", - "source_mapping": { - "start": 11597, - "length": 22, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [279], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "daiJoin.exit(address(this),daiAmount)", - "source_mapping": { - "start": 11629, - "length": 38, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [280], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "DaiWithdrawn(daiAmount)", - "source_mapping": { - "start": 11677, - "length": 28, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [281], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in DsrBaseStrategy._dsrWithdrawal(uint256,uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#278-282):\n\tExternal calls:\n\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n", - "markdown": "Reentrancy in [DsrBaseStrategy._dsrWithdrawal(uint256,uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L278-L282):\n\tExternal calls:\n\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L278-L282", - "id": "d35e410305415164f2083f99e160a70431f3fb38caf25144473d47103896e96b", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_mintDToken", - "source_mapping": { - "start": 28533, - "length": 1205, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 + "start": 5516, + "length": 36, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 153 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "liquidateExposures", + "source_mapping": { + "start": 5038, + "length": 531, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "liquidateExposures(Vault[],IERC20[])" + } + } + } } - }, - "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - }, - { - "type": "node", - "name": "tokenConfig.dToken.mint(strategy,_newDebt)", - "source_mapping": { - "start": 29294, - "length": 43, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [657], - "starting_column": 13, - "ending_column": 56 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_mintDToken", - "source_mapping": { - "start": 28533, - "length": 1205, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "OpsManager.liquidateExposures(Vault[],IERC20[]) (contracts/core/OpsManager.sol#144-155) has external calls inside a loop: vaults[i_scope_0].redeemExposures(exposures) (contracts/core/OpsManager.sol#153)\n", + "markdown": "[OpsManager.liquidateExposures(Vault[],IERC20[])](contracts/core/OpsManager.sol#L144-L155) has external calls inside a loop: [vaults[i_scope_0].redeemExposures(exposures)](contracts/core/OpsManager.sol#L153)\n", + "first_markdown_element": "contracts/core/OpsManager.sol#L144-L155", + "id": "03a21ffca7a3586cab7fab91c4d3c7df01b444412ef9a937d63e8d95d7ef5075", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "requiresRebalance", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)", - "source_mapping": { - "start": 29641, - "length": 90, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [669], - "starting_column": 9, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_mintDToken", - "source_mapping": { - "start": 28533, - "length": 1205, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 2821, + "length": 553, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" + } + }, + { + "type": "node", + "name": "(inWindow) = vaults[i].inEnterExitWindow()", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#638-670):\n\tExternal calls:\n\t- tokenConfig.dToken.mint(strategy,_newDebt) (contracts/v2/TreasuryReservesVault.sol#657)\n\tEvent emitted after the call(s):\n\t- StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance) (contracts/v2/TreasuryReservesVault.sol#669)\n", - "markdown": "Reentrancy in [TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L638-L670):\n\tExternal calls:\n\t- [tokenConfig.dToken.mint(strategy,_newDebt)](contracts/v2/TreasuryReservesVault.sol#L657)\n\tEvent emitted after the call(s):\n\t- [StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)](contracts/v2/TreasuryReservesVault.sol#L669)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L638-L670", - "id": "d06d6a53d0451e137729438d3e1093db6d5e7f0f78494fe8b2a70bd44b393675", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_withdrawFromBaseStrategy", - "source_mapping": { - "start": 25804, - "length": 2552, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 + "start": 3101, + "length": 49, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 86 + ], + "starting_column": 13, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "requiresRebalance", + "source_mapping": { + "start": 2821, + "length": 553, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" + } + } + } } - }, - "signature": "_withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)" - } - }, - { - "type": "node", - "name": "_withdrawnAmount = _baseStrategy.trvWithdraw(_withdrawFromBaseStrategyAmount)", - "source_mapping": { - "start": 27290, - "length": 85, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [608], - "starting_column": 17, - "ending_column": 102 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_withdrawFromBaseStrategy", - "source_mapping": { - "start": 25804, - "length": 2552, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue) (contracts/core/OpsManagerLib.sol#79-95) has external calls inside a loop: (inWindow) = vaults[i].inEnterExitWindow() (contracts/core/OpsManagerLib.sol#86)\n", + "markdown": "[OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue)](contracts/core/OpsManagerLib.sol#L79-L95) has external calls inside a loop: [(inWindow) = vaults[i].inEnterExitWindow()](contracts/core/OpsManagerLib.sol#L86)\n", + "first_markdown_element": "contracts/core/OpsManagerLib.sol#L79-L95", + "id": "33abe3219d901465ec0025ed3b5cee25a23e8e043748dac853f60e352579796c", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "requiresRebalance", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr))", - "source_mapping": { - "start": 27553, - "length": 319, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [614, 615, 616, 617, 618, 619, 620, 621], - "starting_column": 21, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_withdrawFromBaseStrategy", - "source_mapping": { - "start": 25804, - "length": 2552, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 2821, + "length": 553, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" + } + }, + { + "type": "node", + "name": "requiresUpdate[i] = farmingPool.shares(address(vaults[i])) != vaults[i].targetRevenueShare()", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)" + "start": 3233, + "length": 92, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 13, + "ending_column": 105 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "requiresRebalance", + "source_mapping": { + "start": 2821, + "length": 553, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "requiresRebalance(Vault[],TreasuryFarmingRevenue)" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)", - "source_mapping": { - "start": 30398, - "length": 71, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [688], - "starting_column": 9, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_burnDToken", - "source_mapping": { - "start": 29999, - "length": 1179, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue) (contracts/core/OpsManagerLib.sol#79-95) has external calls inside a loop: requiresUpdate[i] = farmingPool.shares(address(vaults[i])) != vaults[i].targetRevenueShare() (contracts/core/OpsManagerLib.sol#91)\n", + "markdown": "[OpsManagerLib.requiresRebalance(Vault[],TreasuryFarmingRevenue)](contracts/core/OpsManagerLib.sol#L79-L95) has external calls inside a loop: [requiresUpdate[i] = farmingPool.shares(address(vaults[i])) != vaults[i].targetRevenueShare()](contracts/core/OpsManagerLib.sol#L91)\n", + "first_markdown_element": "contracts/core/OpsManagerLib.sol#L79-L95", + "id": "291eba1d32cb690e10f4480f7b32b2bae6d005ffbf40558ffd08cf8b0ce6ee4d", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "updateExposureReval", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)", - "source_mapping": { - "start": 31081, - "length": 90, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [708], - "starting_column": 9, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_burnDToken", - "source_mapping": { - "start": 29999, - "length": 1179, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 3380, + "length": 681, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + } + }, + { + "type": "node", + "name": "exposure = pools[exposureTokens[i]].exposure()", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + "start": 3725, + "length": 55, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 101 + ], + "starting_column": 13, + "ending_column": 68 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateExposureReval", + "source_mapping": { + "start": 3380, + "length": 681, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "_burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr))", - "source_mapping": { - "start": 27553, - "length": 319, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [614, 615, 616, 617, 618, 619, 620, 621], - "starting_column": 21, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_withdrawFromBaseStrategy", - "source_mapping": { - "start": 25804, - "length": 2552, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue)) (contracts/core/OpsManagerLib.sol#97-109) has external calls inside a loop: exposure = pools[exposureTokens[i]].exposure() (contracts/core/OpsManagerLib.sol#101)\n", + "markdown": "[OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))](contracts/core/OpsManagerLib.sol#L97-L109) has external calls inside a loop: [exposure = pools[exposureTokens[i]].exposure()](contracts/core/OpsManagerLib.sol#L101)\n", + "first_markdown_element": "contracts/core/OpsManagerLib.sol#L97-L109", + "id": "29cef7ed2793cf3d146be2fdec55418a2cdf263801d54510013749346bac88f3", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "updateExposureReval", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TreasuryReservesVault._withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256) (contracts/v2/TreasuryReservesVault.sol#582-632):\n\tExternal calls:\n\t- _withdrawnAmount = _baseStrategy.trvWithdraw(_withdrawFromBaseStrategyAmount) (contracts/v2/TreasuryReservesVault.sol#608)\n\t- _burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr)) (contracts/v2/TreasuryReservesVault.sol#614-621)\n\t\t- _burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount) (contracts/v2/TreasuryReservesVault.sol#688)\n\tEvent emitted after the call(s):\n\t- StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance) (contracts/v2/TreasuryReservesVault.sol#708)\n\t\t- _burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr)) (contracts/v2/TreasuryReservesVault.sol#614-621)\n", - "markdown": "Reentrancy in [TreasuryReservesVault._withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)](contracts/v2/TreasuryReservesVault.sol#L582-L632):\n\tExternal calls:\n\t- [_withdrawnAmount = _baseStrategy.trvWithdraw(_withdrawFromBaseStrategyAmount)](contracts/v2/TreasuryReservesVault.sol#L608)\n\t- [_burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr))](contracts/v2/TreasuryReservesVault.sol#L614-L621)\n\t\t- [_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)](contracts/v2/TreasuryReservesVault.sol#L688)\n\tEvent emitted after the call(s):\n\t- [StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)](contracts/v2/TreasuryReservesVault.sol#L708)\n\t\t- [_burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr))](contracts/v2/TreasuryReservesVault.sol#L614-L621)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L582-L632", - "id": "89618dfba3ac7d15e5970daa2e83a543e99a75c999d6a13fbdd7a2d009309297", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 20001, - "length": 2092, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - }, - { - "type": "node", - "name": "_tokenVault.borrowProtocolToken(protocolTokenAmount,address(this))", - "source_mapping": { - "start": 20777, - "length": 67, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [483], - "starting_column": 9, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 20001, - "length": 2092, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_tokenVault.borrowQuoteToken(quoteTokenAmount,address(this))", - "source_mapping": { - "start": 20854, - "length": 61, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [484], - "starting_column": 9, - "ending_column": 70 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 20001, - "length": 2092, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount)", - "source_mapping": { - "start": 20995, - "length": 80, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [488], - "starting_column": 13, - "ending_column": 93 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 20001, - "length": 2092, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "quoteToken.safeApprove(address(balancerVault),0)", - "source_mapping": { - "start": 21254, - "length": 49, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [491], - "starting_column": 17, - "ending_column": 66 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 20001, - "length": 2092, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount)", - "source_mapping": { - "start": 21321, - "length": 74, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [492], - "starting_column": 17, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 20001, - "length": 2092, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "balancerVault.joinPool(balancerPoolId,address(this),address(this),request)", - "source_mapping": { - "start": 21538, - "length": 77, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [499], - "starting_column": 13, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 20001, - "length": 2092, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)", - "source_mapping": { - "start": 21814, - "length": 75, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [506], - "starting_column": 9, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 20001, - "length": 2092, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Ramos.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/amo/Ramos.sol#464-513):\n\tExternal calls:\n\t- _tokenVault.borrowProtocolToken(protocolTokenAmount,address(this)) (contracts/amo/Ramos.sol#483)\n\t- _tokenVault.borrowQuoteToken(quoteTokenAmount,address(this)) (contracts/amo/Ramos.sol#484)\n\t- protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount) (contracts/amo/Ramos.sol#488)\n\t- quoteToken.safeApprove(address(balancerVault),0) (contracts/amo/Ramos.sol#491)\n\t- quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount) (contracts/amo/Ramos.sol#492)\n\t- balancerVault.joinPool(balancerPoolId,address(this),address(this),request) (contracts/amo/Ramos.sol#499)\n\tEvent emitted after the call(s):\n\t- LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) (contracts/amo/Ramos.sol#506)\n", - "markdown": "Reentrancy in [Ramos.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/amo/Ramos.sol#L464-L513):\n\tExternal calls:\n\t- [_tokenVault.borrowProtocolToken(protocolTokenAmount,address(this))](contracts/amo/Ramos.sol#L483)\n\t- [_tokenVault.borrowQuoteToken(quoteTokenAmount,address(this))](contracts/amo/Ramos.sol#L484)\n\t- [protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount)](contracts/amo/Ramos.sol#L488)\n\t- [quoteToken.safeApprove(address(balancerVault),0)](contracts/amo/Ramos.sol#L491)\n\t- [quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount)](contracts/amo/Ramos.sol#L492)\n\t- [balancerVault.joinPool(balancerPoolId,address(this),address(this),request)](contracts/amo/Ramos.sol#L499)\n\tEvent emitted after the call(s):\n\t- [LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)](contracts/amo/Ramos.sol#L506)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L464-L513", - "id": "15647cc5365c69815f9cf055275a3e256df8e9495b6e93d5e1a813c3a4db8bfa", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 7071, - "length": 365, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [181, 182, 183, 184, 185, 186, 187, 188], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - }, - { - "type": "node", - "name": "(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) = ramos.addLiquidity(_requestData)", - "source_mapping": { - "start": 7185, - "length": 161, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [182, 183, 184, 185, 186], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 7071, - "length": 365, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [181, 182, 183, 184, 185, 186, 187, 188], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "AddLiquidity(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)", - "source_mapping": { - "start": 7356, - "length": 73, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [187], - "starting_column": 9, - "ending_column": 82 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "addLiquidity", - "source_mapping": { - "start": 7071, - "length": 365, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [181, 182, 183, 184, 185, 186, 187, 188], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in RamosStrategy.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/v2/strategies/RamosStrategy.sol#181-188):\n\tExternal calls:\n\t- (quoteTokenAmount,protocolTokenAmount,bptTokensStaked) = ramos.addLiquidity(_requestData) (contracts/v2/strategies/RamosStrategy.sol#182-186)\n\tEvent emitted after the call(s):\n\t- AddLiquidity(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) (contracts/v2/strategies/RamosStrategy.sol#187)\n", - "markdown": "Reentrancy in [RamosStrategy.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/v2/strategies/RamosStrategy.sol#L181-L188):\n\tExternal calls:\n\t- [(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) = ramos.addLiquidity(_requestData)](contracts/v2/strategies/RamosStrategy.sol#L182-L186)\n\tEvent emitted after the call(s):\n\t- [AddLiquidity(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)](contracts/v2/strategies/RamosStrategy.sol#L187)\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L181-L188", - "id": "86c6739a14ef579509f4e0190b6310b585123eb008deed594e5fdc44ec40eefe", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "borrow", - "source_mapping": { - "start": 3212, - "length": 319, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [88, 89, 90, 91, 92, 93, 94, 95, 96], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrow(IERC20,uint256)" - } - }, - { - "type": "node", - "name": "circuitBreakerProxy.preCheck(address(token),msg.sender,amount)", - "source_mapping": { - "start": 3296, - "length": 112, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [89, 90, 91, 92, 93], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrow", - "source_mapping": { - "start": 3212, - "length": 319, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [88, 89, 90, 91, 92, 93, 94, 95, 96], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrow(IERC20,uint256)" + "start": 3380, + "length": 681, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + } + }, + { + "type": "node", + "name": "currentReval = exposure.reval()", + "source_mapping": { + "start": 3794, + "length": 39, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 102 + ], + "starting_column": 13, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateExposureReval", + "source_mapping": { + "start": 3380, + "length": 681, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "Borrow(address(token),amount)", - "source_mapping": { - "start": 3418, - "length": 35, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [94], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrow", - "source_mapping": { - "start": 3212, - "length": 319, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [88, 89, 90, 91, 92, 93, 94, 95, 96], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrow(IERC20,uint256)" + ], + "description": "OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue)) (contracts/core/OpsManagerLib.sol#97-109) has external calls inside a loop: currentReval = exposure.reval() (contracts/core/OpsManagerLib.sol#102)\n", + "markdown": "[OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))](contracts/core/OpsManagerLib.sol#L97-L109) has external calls inside a loop: [currentReval = exposure.reval()](contracts/core/OpsManagerLib.sol#L102)\n", + "first_markdown_element": "contracts/core/OpsManagerLib.sol#L97-L109", + "id": "4b9ed20c5dffb0bb937e8e35bc5da6f0e0de33bda4b92ca4b5f843554466cbbc", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "updateExposureReval", + "source_mapping": { + "start": 3380, + "length": 681, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + } + }, + { + "type": "node", + "name": "exposure.decreaseReval(currentReval - revals[i])", + "source_mapping": { + "start": 3895, + "length": 48, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 104 + ], + "starting_column": 17, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateExposureReval", + "source_mapping": { + "start": 3380, + "length": 681, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in GnosisStrategy.borrow(IERC20,uint256) (contracts/v2/strategies/GnosisStrategy.sol#88-96):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(token),msg.sender,amount) (contracts/v2/strategies/GnosisStrategy.sol#89-93)\n\tEvent emitted after the call(s):\n\t- Borrow(address(token),amount) (contracts/v2/strategies/GnosisStrategy.sol#94)\n", - "markdown": "Reentrancy in [GnosisStrategy.borrow(IERC20,uint256)](contracts/v2/strategies/GnosisStrategy.sol#L88-L96):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(token),msg.sender,amount)](contracts/v2/strategies/GnosisStrategy.sol#L89-L93)\n\tEvent emitted after the call(s):\n\t- [Borrow(address(token),amount)](contracts/v2/strategies/GnosisStrategy.sol#L94)\n", - "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L88-L96", - "id": "816d5794942352b4b9c381b210cb4b35ac9c43889f1c7eaa1b7e32f3c1f8ab33", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 7809, - "length": 246, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [195, 196, 197, 198, 199], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue)) (contracts/core/OpsManagerLib.sol#97-109) has external calls inside a loop: exposure.decreaseReval(currentReval - revals[i]) (contracts/core/OpsManagerLib.sol#104)\n", + "markdown": "[OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))](contracts/core/OpsManagerLib.sol#L97-L109) has external calls inside a loop: [exposure.decreaseReval(currentReval - revals[i])](contracts/core/OpsManagerLib.sol#L104)\n", + "first_markdown_element": "contracts/core/OpsManagerLib.sol#L97-L109", + "id": "2a8d232e2a9bf6e56bf39af5ffd6e5e36613e5a9aa77a6691551c45c0092abf8", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "updateExposureReval", + "source_mapping": { + "start": 3380, + "length": 681, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + } + }, + { + "type": "node", + "name": "exposure.increaseReval(revals[i] - currentReval)", + "source_mapping": { + "start": 3982, + "length": 48, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 106 + ], + "starting_column": 17, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "updateExposureReval", + "source_mapping": { + "start": 3380, + "length": 681, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManagerLib", + "source_mapping": { + "start": 158, + "length": 3905, + "filename_relative": "contracts/core/OpsManagerLib.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManagerLib.sol", + "filename_short": "contracts/core/OpsManagerLib.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))" + } + } + } } - }, - "signature": "borrowAndDeposit(uint256)" - } - }, - { - "type": "node", - "name": "treasuryReservesVault.borrow(daiToken,amount,address(this))", - "source_mapping": { - "start": 7958, - "length": 61, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [197], - "starting_column": 9, - "ending_column": 70 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 7809, - "length": 246, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [195, 196, 197, 198, 199], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" + ], + "description": "OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue)) (contracts/core/OpsManagerLib.sol#97-109) has external calls inside a loop: exposure.increaseReval(revals[i] - currentReval) (contracts/core/OpsManagerLib.sol#106)\n", + "markdown": "[OpsManagerLib.updateExposureReval(IERC20[],uint256[],mapping(IERC20 => TreasuryFarmingRevenue))](contracts/core/OpsManagerLib.sol#L97-L109) has external calls inside a loop: [exposure.increaseReval(revals[i] - currentReval)](contracts/core/OpsManagerLib.sol#L106)\n", + "first_markdown_element": "contracts/core/OpsManagerLib.sol#L97-L109", + "id": "02b2b95f67586f3365a9cc8e6b95fd4d48a424694b15f84a5b362f195ca5b007", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "redeemExposures", + "source_mapping": { + "start": 4724, + "length": 251, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 117, + 118, + 119, + 120, + 121, + 122, + 123 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "redeemExposures(Exposure[])" + } + }, + { + "type": "node", + "name": "exposures[i].redeem()", + "source_mapping": { + "start": 4868, + "length": 21, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 119 + ], + "starting_column": 13, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "redeemExposures", + "source_mapping": { + "start": 4724, + "length": 251, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 117, + 118, + 119, + 120, + 121, + 122, + 123 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "redeemExposures(Exposure[])" + } + } + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_dsrDeposit(amount)", - "source_mapping": { - "start": 8029, - "length": 19, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [198], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 7809, - "length": 246, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [195, 196, 197, 198, 199], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "chi = pot.drip()", - "source_mapping": { - "start": 5566, - "length": 60, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_checkpointChi()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "daiJoin.join(address(this),amount)", - "source_mapping": { - "start": 8342, - "length": 35, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [207], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrDeposit", - "source_mapping": { - "start": 8061, - "length": 349, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "pot.join(shares)", - "source_mapping": { - "start": 8387, - "length": 16, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [208], - "starting_column": 9, - "ending_column": 25 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrDeposit", - "source_mapping": { - "start": 8061, - "length": 349, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "DaiDeposited(amount)", - "source_mapping": { - "start": 8307, - "length": 25, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [206], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrDeposit", - "source_mapping": { - "start": 8061, - "length": 349, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "_dsrDeposit(amount)", - "source_mapping": { - "start": 8029, - "length": 19, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [198], - "starting_column": 9, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 7809, - "length": 246, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [195, 196, 197, 198, 199], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in DsrBaseStrategy.borrowAndDeposit(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#195-199):\n\tExternal calls:\n\t- treasuryReservesVault.borrow(daiToken,amount,address(this)) (contracts/v2/strategies/DsrBaseStrategy.sol#197)\n\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t\t- daiJoin.join(address(this),amount) (contracts/v2/strategies/DsrBaseStrategy.sol#207)\n\t\t- pot.join(shares) (contracts/v2/strategies/DsrBaseStrategy.sol#208)\n\tEvent emitted after the call(s):\n\t- DaiDeposited(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#206)\n\t\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n", - "markdown": "Reentrancy in [DsrBaseStrategy.borrowAndDeposit(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L195-L199):\n\tExternal calls:\n\t- [treasuryReservesVault.borrow(daiToken,amount,address(this))](contracts/v2/strategies/DsrBaseStrategy.sol#L197)\n\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t\t- [daiJoin.join(address(this),amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L207)\n\t\t- [pot.join(shares)](contracts/v2/strategies/DsrBaseStrategy.sol#L208)\n\tEvent emitted after the call(s):\n\t- [DaiDeposited(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L206)\n\t\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L195-L199", - "id": "fa02cb67c0fadd634b5b58c828b6c896bd82d9eafb17365664e0ed1810997c50", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 2046, - "length": 229, - "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "is_dependency": false, - "lines": [61, 62, 63, 64, 65], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTokenBaseStrategy", - "source_mapping": { - "start": 689, - "length": 4427, - "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" - } - }, - { - "type": "node", - "name": "treasuryReservesVault.borrow(templeToken,amount,address(this))", - "source_mapping": { - "start": 2135, - "length": 64, - "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "is_dependency": false, - "lines": [62], - "starting_column": 9, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 2046, - "length": 229, - "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "is_dependency": false, - "lines": [61, 62, 63, 64, 65], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTokenBaseStrategy", - "source_mapping": { - "start": 689, - "length": 4427, - "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "TempleBurned(amount)", - "source_mapping": { - "start": 2209, - "length": 25, - "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "is_dependency": false, - "lines": [63], - "starting_column": 9, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowAndDeposit", - "source_mapping": { - "start": 2046, - "length": 229, - "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "is_dependency": false, - "lines": [61, 62, 63, 64, 65], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTokenBaseStrategy", - "source_mapping": { - "start": 689, - "length": 4427, - "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowAndDeposit(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleTokenBaseStrategy.borrowAndDeposit(uint256) (contracts/v2/strategies/TempleTokenBaseStrategy.sol#61-65):\n\tExternal calls:\n\t- treasuryReservesVault.borrow(templeToken,amount,address(this)) (contracts/v2/strategies/TempleTokenBaseStrategy.sol#62)\n\tEvent emitted after the call(s):\n\t- TempleBurned(amount) (contracts/v2/strategies/TempleTokenBaseStrategy.sol#63)\n", - "markdown": "Reentrancy in [TempleTokenBaseStrategy.borrowAndDeposit(uint256)](contracts/v2/strategies/TempleTokenBaseStrategy.sol#L61-L65):\n\tExternal calls:\n\t- [treasuryReservesVault.borrow(templeToken,amount,address(this))](contracts/v2/strategies/TempleTokenBaseStrategy.sol#L62)\n\tEvent emitted after the call(s):\n\t- [TempleBurned(amount)](contracts/v2/strategies/TempleTokenBaseStrategy.sol#L63)\n", - "first_markdown_element": "contracts/v2/strategies/TempleTokenBaseStrategy.sol#L61-L65", - "id": "a4b7ebab2add03874fc7d7e0fb2176bb3cce4461f7bee4c56c5e3938077ba4b2", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "borrowMax", - "source_mapping": { - "start": 3668, - "length": 489, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowMax(IERC20)" - } - }, - { - "type": "node", - "name": "circuitBreakerProxy.preCheck(address(token),msg.sender,borrowedAmount)", - "source_mapping": { - "start": 3915, - "length": 120, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [105, 106, 107, 108, 109], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowMax", - "source_mapping": { - "start": 3668, - "length": 489, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowMax(IERC20)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "Borrow(address(token),borrowedAmount)", - "source_mapping": { - "start": 4045, - "length": 43, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [110], - "starting_column": 9, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowMax", - "source_mapping": { - "start": 3668, - "length": 489, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowMax(IERC20)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in GnosisStrategy.borrowMax(IERC20) (contracts/v2/strategies/GnosisStrategy.sol#102-112):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(token),msg.sender,borrowedAmount) (contracts/v2/strategies/GnosisStrategy.sol#105-109)\n\tEvent emitted after the call(s):\n\t- Borrow(address(token),borrowedAmount) (contracts/v2/strategies/GnosisStrategy.sol#110)\n", - "markdown": "Reentrancy in [GnosisStrategy.borrowMax(IERC20)](contracts/v2/strategies/GnosisStrategy.sol#L102-L112):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(token),msg.sender,borrowedAmount)](contracts/v2/strategies/GnosisStrategy.sol#L105-L109)\n\tEvent emitted after the call(s):\n\t- [Borrow(address(token),borrowedAmount)](contracts/v2/strategies/GnosisStrategy.sol#L110)\n", - "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L102-L112", - "id": "c3beb3c3be57476ae61c0a7cfb0301faed9288220416d314839649d2de9f7b5e", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "borrowProtocolToken", - "source_mapping": { - "start": 3626, - "length": 353, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [91, 92, 93, 94, 95, 96, 97, 98, 99], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowProtocolToken(uint256,address)" - } - }, - { - "type": "node", - "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", - "source_mapping": { - "start": 3728, - "length": 118, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [92, 93, 94, 95, 96], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowProtocolToken", - "source_mapping": { - "start": 3626, - "length": 353, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [91, 92, 93, 94, 95, 96, 97, 98, 99], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowProtocolToken(uint256,address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "BorrowToken(address(templeToken),amount)", - "source_mapping": { - "start": 3856, - "length": 46, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [97], - "starting_column": 9, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowProtocolToken", - "source_mapping": { - "start": 3626, - "length": 353, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [91, 92, 93, 94, 95, 96, 97, 98, 99], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowProtocolToken(uint256,address)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in RamosStrategy.borrowProtocolToken(uint256,address) (contracts/v2/strategies/RamosStrategy.sol#91-99):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount) (contracts/v2/strategies/RamosStrategy.sol#92-96)\n\tEvent emitted after the call(s):\n\t- BorrowToken(address(templeToken),amount) (contracts/v2/strategies/RamosStrategy.sol#97)\n", - "markdown": "Reentrancy in [RamosStrategy.borrowProtocolToken(uint256,address)](contracts/v2/strategies/RamosStrategy.sol#L91-L99):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)](contracts/v2/strategies/RamosStrategy.sol#L92-L96)\n\tEvent emitted after the call(s):\n\t- [BorrowToken(address(templeToken),amount)](contracts/v2/strategies/RamosStrategy.sol#L97)\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L91-L99", - "id": "e0ba9fad7b97dfcfdfbb8b5dcf413149d4e3c15549b5560fb8aacdf2167f9e31", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "borrowQuoteToken", - "source_mapping": { - "start": 4172, - "length": 347, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [106, 107, 108, 109, 110, 111, 112, 113, 114], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowQuoteToken(uint256,address)" - } - }, - { - "type": "node", - "name": "circuitBreakerProxy.preCheck(address(quoteToken),msg.sender,amount)", - "source_mapping": { - "start": 4271, - "length": 117, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [107, 108, 109, 110, 111], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowQuoteToken", - "source_mapping": { - "start": 4172, - "length": 347, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [106, 107, 108, 109, 110, 111, 112, 113, 114], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowQuoteToken(uint256,address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "BorrowToken(address(quoteToken),amount)", - "source_mapping": { - "start": 4398, - "length": 45, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [112], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "borrowQuoteToken", - "source_mapping": { - "start": 4172, - "length": 347, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [106, 107, 108, 109, 110, 111, 112, 113, 114], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowQuoteToken(uint256,address)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in RamosStrategy.borrowQuoteToken(uint256,address) (contracts/v2/strategies/RamosStrategy.sol#106-114):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(quoteToken),msg.sender,amount) (contracts/v2/strategies/RamosStrategy.sol#107-111)\n\tEvent emitted after the call(s):\n\t- BorrowToken(address(quoteToken),amount) (contracts/v2/strategies/RamosStrategy.sol#112)\n", - "markdown": "Reentrancy in [RamosStrategy.borrowQuoteToken(uint256,address)](contracts/v2/strategies/RamosStrategy.sol#L106-L114):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(quoteToken),msg.sender,amount)](contracts/v2/strategies/RamosStrategy.sol#L107-L111)\n\tEvent emitted after the call(s):\n\t- [BorrowToken(address(quoteToken),amount)](contracts/v2/strategies/RamosStrategy.sol#L112)\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L106-L114", - "id": "bbc7a06e8819c324c8e6cacd486325e56ef60f1d5a3b26d061c95866855e9804", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "checkpointAssetBalances", - "source_mapping": { - "start": 6888, - "length": 403, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "checkpointAssetBalances()" - } - }, - { - "type": "node", - "name": "(daiBalance) = _checkpointDaiBalance()", - "source_mapping": { - "start": 7011, - "length": 48, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [176], - "starting_column": 9, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "checkpointAssetBalances", - "source_mapping": { - "start": 6888, - "length": 403, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "checkpointAssetBalances()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "chi = pot.drip()", - "source_mapping": { - "start": 5566, - "length": 60, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_checkpointChi()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "AssetBalancesCheckpoint(assetBalances)", - "source_mapping": { - "start": 7241, - "length": 43, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [182], - "starting_column": 9, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "checkpointAssetBalances", - "source_mapping": { - "start": 6888, - "length": 403, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "checkpointAssetBalances()" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in DsrBaseStrategy.checkpointAssetBalances() (contracts/v2/strategies/DsrBaseStrategy.sol#173-183):\n\tExternal calls:\n\t- (daiBalance) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#176)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\tEvent emitted after the call(s):\n\t- AssetBalancesCheckpoint(assetBalances) (contracts/v2/strategies/DsrBaseStrategy.sol#182)\n", - "markdown": "Reentrancy in [DsrBaseStrategy.checkpointAssetBalances()](contracts/v2/strategies/DsrBaseStrategy.sol#L173-L183):\n\tExternal calls:\n\t- [(daiBalance) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L176)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\tEvent emitted after the call(s):\n\t- [AssetBalancesCheckpoint(assetBalances)](contracts/v2/strategies/DsrBaseStrategy.sol#L182)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L173-L183", - "id": "91547e7be3e8d823bd0bb0f659906fbda2e7c22a3e071f2d8982d126ca2e8293", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "depositAndStakeBptTokens", - "source_mapping": { - "start": 24153, - "length": 411, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "depositAndStakeBptTokens(uint256,bool)" - } - }, - { - "type": "node", - "name": "bptToken.safeTransferFrom(msg.sender,address(this),amount)", - "source_mapping": { - "start": 24336, - "length": 60, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [571], - "starting_column": 13, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "depositAndStakeBptTokens", - "source_mapping": { - "start": 24153, - "length": 411, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "depositAndStakeBptTokens(uint256,bool)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "bptToken.safeTransfer(address(amoStaking),amount)", - "source_mapping": { - "start": 24416, - "length": 50, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [573], - "starting_column": 9, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "depositAndStakeBptTokens", - "source_mapping": { - "start": 24153, - "length": 411, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "depositAndStakeBptTokens(uint256,bool)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "amoStaking.depositAndStake(amount)", - "source_mapping": { - "start": 24476, - "length": 34, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [574], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "depositAndStakeBptTokens", - "source_mapping": { - "start": 24153, - "length": 411, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "depositAndStakeBptTokens(uint256,bool)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "DepositAndStakeBptTokens(amount)", - "source_mapping": { - "start": 24520, - "length": 37, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [575], - "starting_column": 9, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "depositAndStakeBptTokens", - "source_mapping": { - "start": 24153, - "length": 411, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "depositAndStakeBptTokens(uint256,bool)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Ramos.depositAndStakeBptTokens(uint256,bool) (contracts/amo/Ramos.sol#566-576):\n\tExternal calls:\n\t- bptToken.safeTransferFrom(msg.sender,address(this),amount) (contracts/amo/Ramos.sol#571)\n\t- bptToken.safeTransfer(address(amoStaking),amount) (contracts/amo/Ramos.sol#573)\n\t- amoStaking.depositAndStake(amount) (contracts/amo/Ramos.sol#574)\n\tEvent emitted after the call(s):\n\t- DepositAndStakeBptTokens(amount) (contracts/amo/Ramos.sol#575)\n", - "markdown": "Reentrancy in [Ramos.depositAndStakeBptTokens(uint256,bool)](contracts/amo/Ramos.sol#L566-L576):\n\tExternal calls:\n\t- [bptToken.safeTransferFrom(msg.sender,address(this),amount)](contracts/amo/Ramos.sol#L571)\n\t- [bptToken.safeTransfer(address(amoStaking),amount)](contracts/amo/Ramos.sol#L573)\n\t- [amoStaking.depositAndStake(amount)](contracts/amo/Ramos.sol#L574)\n\tEvent emitted after the call(s):\n\t- [DepositAndStakeBptTokens(amount)](contracts/amo/Ramos.sol#L575)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L566-L576", - "id": "67e99bfded023e26233003458844419ba59173900b8f69b73dd5b1196eedee80", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "rebalanceDownExit", - "source_mapping": { - "start": 13900, - "length": 1330, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownExit(uint256,uint256)" - } - }, - { - "type": "node", - "name": "amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))", - "source_mapping": { - "start": 14331, - "length": 70, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [343], - "starting_column": 9, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceDownExit", - "source_mapping": { - "start": 13900, - "length": 1330, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownExit(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "quoteTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minQuoteTokenAmountOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,treasuryPriceIndex(),quoteToken)", - "source_mapping": { - "start": 14451, - "length": 266, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [346, 347, 348, 349], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceDownExit", - "source_mapping": { - "start": 13900, - "length": 1330, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownExit(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "quoteToken.safeTransfer(feeCollector,feeAmt)", - "source_mapping": { - "start": 14910, - "length": 45, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [354], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceDownExit", - "source_mapping": { - "start": 13900, - "length": 1330, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownExit(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "RebalanceDownExit(bptAmountIn,quoteTokenAmountOut,feeAmt)", - "source_mapping": { - "start": 15049, - "length": 64, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [360], - "starting_column": 9, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceDownExit", - "source_mapping": { - "start": 13900, - "length": 1330, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownExit(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Ramos.rebalanceDownExit(uint256,uint256) (contracts/amo/Ramos.sol#334-364):\n\tExternal calls:\n\t- amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper)) (contracts/amo/Ramos.sol#343)\n\t- quoteTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minQuoteTokenAmountOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,treasuryPriceIndex(),quoteToken) (contracts/amo/Ramos.sol#346-349)\n\t- quoteToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#354)\n\tEvent emitted after the call(s):\n\t- RebalanceDownExit(bptAmountIn,quoteTokenAmountOut,feeAmt) (contracts/amo/Ramos.sol#360)\n", - "markdown": "Reentrancy in [Ramos.rebalanceDownExit(uint256,uint256)](contracts/amo/Ramos.sol#L334-L364):\n\tExternal calls:\n\t- [amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))](contracts/amo/Ramos.sol#L343)\n\t- [quoteTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minQuoteTokenAmountOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,treasuryPriceIndex(),quoteToken)](contracts/amo/Ramos.sol#L346-L349)\n\t- [quoteToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L354)\n\tEvent emitted after the call(s):\n\t- [RebalanceDownExit(bptAmountIn,quoteTokenAmountOut,feeAmt)](contracts/amo/Ramos.sol#L360)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L334-L364", - "id": "6083aa0bd6d99d380fd5f140d51f148bea51f9d21cc99bae41a0172c0c80592f", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "rebalanceDownJoin", - "source_mapping": { - "start": 18072, - "length": 1545, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownJoin(uint256,uint256)" - } - }, - { - "type": "node", - "name": "tokenVault.borrowProtocolToken(protocolTokenAmountIn,address(this))", - "source_mapping": { - "start": 18436, - "length": 68, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [429], - "starting_column": 9, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceDownJoin", - "source_mapping": { - "start": 18072, - "length": 1545, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "protocolToken.safeTransfer(feeCollector,feeAmt)", - "source_mapping": { - "start": 18710, - "length": 48, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [434], - "starting_column": 13, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceDownJoin", - "source_mapping": { - "start": 18072, - "length": 1545, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "protocolToken.safeTransfer(address(_poolHelper),joinAmountIn)", - "source_mapping": { - "start": 18942, - "length": 62, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [440], - "starting_column": 9, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceDownJoin", - "source_mapping": { - "start": 18072, - "length": 1545, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,protocolTokenBalancerPoolIndex,protocolToken)", - "source_mapping": { - "start": 19057, - "length": 264, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [443, 444, 445, 446, 447], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceDownJoin", - "source_mapping": { - "start": 18072, - "length": 1545, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "RebalanceDownJoin(protocolTokenAmountIn,bptTokensStaked,feeAmt)", - "source_mapping": { - "start": 19331, - "length": 70, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [448], - "starting_column": 9, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceDownJoin", - "source_mapping": { - "start": 18072, - "length": 1545, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceDownJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Ramos.rebalanceDownJoin(uint256,uint256) (contracts/amo/Ramos.sol#421-455):\n\tExternal calls:\n\t- tokenVault.borrowProtocolToken(protocolTokenAmountIn,address(this)) (contracts/amo/Ramos.sol#429)\n\t- protocolToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#434)\n\t- protocolToken.safeTransfer(address(_poolHelper),joinAmountIn) (contracts/amo/Ramos.sol#440)\n\t- bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,protocolTokenBalancerPoolIndex,protocolToken) (contracts/amo/Ramos.sol#443-447)\n\tEvent emitted after the call(s):\n\t- RebalanceDownJoin(protocolTokenAmountIn,bptTokensStaked,feeAmt) (contracts/amo/Ramos.sol#448)\n", - "markdown": "Reentrancy in [Ramos.rebalanceDownJoin(uint256,uint256)](contracts/amo/Ramos.sol#L421-L455):\n\tExternal calls:\n\t- [tokenVault.borrowProtocolToken(protocolTokenAmountIn,address(this))](contracts/amo/Ramos.sol#L429)\n\t- [protocolToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L434)\n\t- [protocolToken.safeTransfer(address(_poolHelper),joinAmountIn)](contracts/amo/Ramos.sol#L440)\n\t- [bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,protocolTokenBalancerPoolIndex,protocolToken)](contracts/amo/Ramos.sol#L443-L447)\n\tEvent emitted after the call(s):\n\t- [RebalanceDownJoin(protocolTokenAmountIn,bptTokensStaked,feeAmt)](contracts/amo/Ramos.sol#L448)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L421-L455", - "id": "4ad07f927825c05b798c66409225ee0120c0e24658c057fada6ad9f73180240c", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "rebalanceUpExit", - "source_mapping": { - "start": 11847, - "length": 1435, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpExit(uint256,uint256)" - } - }, - { - "type": "node", - "name": "amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))", - "source_mapping": { - "start": 12270, - "length": 70, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [299], - "starting_column": 9, - "ending_column": 79 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceUpExit", - "source_mapping": { - "start": 11847, - "length": 1435, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpExit(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "protocolTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minProtocolTokenOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,protocolTokenBalancerPoolIndex,treasuryPriceIndex(),protocolToken)", - "source_mapping": { - "start": 12397, - "length": 279, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [302, 303, 304, 305, 306], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceUpExit", - "source_mapping": { - "start": 11847, - "length": 1435, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpExit(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "protocolToken.safeTransfer(feeCollector,feeAmt)", - "source_mapping": { - "start": 12875, - "length": 48, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [311], - "starting_column": 13, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceUpExit", - "source_mapping": { - "start": 11847, - "length": 1435, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpExit(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "RebalanceUpExit(bptAmountIn,protocolTokenAmountOut,feeAmt)", - "source_mapping": { - "start": 13091, - "length": 65, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [318], - "starting_column": 9, - "ending_column": 74 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceUpExit", - "source_mapping": { - "start": 11847, - "length": 1435, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpExit(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Ramos.rebalanceUpExit(uint256,uint256) (contracts/amo/Ramos.sol#290-322):\n\tExternal calls:\n\t- amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper)) (contracts/amo/Ramos.sol#299)\n\t- protocolTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minProtocolTokenOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,protocolTokenBalancerPoolIndex,treasuryPriceIndex(),protocolToken) (contracts/amo/Ramos.sol#302-306)\n\t- protocolToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#311)\n\tEvent emitted after the call(s):\n\t- RebalanceUpExit(bptAmountIn,protocolTokenAmountOut,feeAmt) (contracts/amo/Ramos.sol#318)\n", - "markdown": "Reentrancy in [Ramos.rebalanceUpExit(uint256,uint256)](contracts/amo/Ramos.sol#L290-L322):\n\tExternal calls:\n\t- [amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))](contracts/amo/Ramos.sol#L299)\n\t- [protocolTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minProtocolTokenOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,protocolTokenBalancerPoolIndex,treasuryPriceIndex(),protocolToken)](contracts/amo/Ramos.sol#L302-L306)\n\t- [protocolToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L311)\n\tEvent emitted after the call(s):\n\t- [RebalanceUpExit(bptAmountIn,protocolTokenAmountOut,feeAmt)](contracts/amo/Ramos.sol#L318)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L290-L322", - "id": "d1e3e7511c959f3f2562cee5d162c6238b1fb8ed8584ca23b92437d2651d74cd", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "rebalanceUpJoin", - "source_mapping": { - "start": 15897, - "length": 1496, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpJoin(uint256,uint256)" - } - }, - { - "type": "node", - "name": "tokenVault.borrowQuoteToken(quoteTokenAmountIn,address(this))", - "source_mapping": { - "start": 16247, - "length": 62, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [384], - "starting_column": 9, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceUpJoin", - "source_mapping": { - "start": 15897, - "length": 1496, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "quoteToken.safeTransfer(feeCollector,feeAmt)", - "source_mapping": { - "start": 16502, - "length": 45, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [389], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceUpJoin", - "source_mapping": { - "start": 15897, - "length": 1496, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "quoteToken.safeTransfer(address(_poolHelper),joinAmountIn)", - "source_mapping": { - "start": 16743, - "length": 59, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [395], - "starting_column": 9, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceUpJoin", - "source_mapping": { - "start": 15897, - "length": 1496, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,quoteToken)", - "source_mapping": { - "start": 16852, - "length": 250, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [398, 399, 400, 401], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceUpJoin", - "source_mapping": { - "start": 15897, - "length": 1496, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "RebalanceUpJoin(quoteTokenAmountIn,bptTokensStaked,feeAmt)", - "source_mapping": { - "start": 17112, - "length": 65, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [402], - "starting_column": 9, - "ending_column": 74 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "rebalanceUpJoin", - "source_mapping": { - "start": 15897, - "length": 1496, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "rebalanceUpJoin(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Ramos.rebalanceUpJoin(uint256,uint256) (contracts/amo/Ramos.sol#376-409):\n\tExternal calls:\n\t- tokenVault.borrowQuoteToken(quoteTokenAmountIn,address(this)) (contracts/amo/Ramos.sol#384)\n\t- quoteToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#389)\n\t- quoteToken.safeTransfer(address(_poolHelper),joinAmountIn) (contracts/amo/Ramos.sol#395)\n\t- bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,quoteToken) (contracts/amo/Ramos.sol#398-401)\n\tEvent emitted after the call(s):\n\t- RebalanceUpJoin(quoteTokenAmountIn,bptTokensStaked,feeAmt) (contracts/amo/Ramos.sol#402)\n", - "markdown": "Reentrancy in [Ramos.rebalanceUpJoin(uint256,uint256)](contracts/amo/Ramos.sol#L376-L409):\n\tExternal calls:\n\t- [tokenVault.borrowQuoteToken(quoteTokenAmountIn,address(this))](contracts/amo/Ramos.sol#L384)\n\t- [quoteToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L389)\n\t- [quoteToken.safeTransfer(address(_poolHelper),joinAmountIn)](contracts/amo/Ramos.sol#L395)\n\t- [bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,quoteToken)](contracts/amo/Ramos.sol#L398-L401)\n\tEvent emitted after the call(s):\n\t- [RebalanceUpJoin(quoteTokenAmountIn,bptTokensStaked,feeAmt)](contracts/amo/Ramos.sol#L402)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L376-L409", - "id": "0f3416b0e7e6449ff33b7394396c4bf724c482fcbb9d305e03fcb53aaee726ac", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "recoverToGnosis", - "source_mapping": { - "start": 5325, - "length": 237, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [142, 143, 144, 145], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "recoverToGnosis(address,uint256)" - } - }, - { - "type": "node", - "name": "IERC20(token).safeTransfer(gnosisSafeWallet,amount)", - "source_mapping": { - "start": 5419, - "length": 52, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [143], - "starting_column": 9, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "recoverToGnosis", - "source_mapping": { - "start": 5325, - "length": 237, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [142, 143, 144, 145], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "recoverToGnosis(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "CommonEventsAndErrors.TokenRecovered(gnosisSafeWallet,token,amount)", - "source_mapping": { - "start": 5481, - "length": 74, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [144], - "starting_column": 9, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "recoverToGnosis", - "source_mapping": { - "start": 5325, - "length": 237, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [142, 143, 144, 145], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "GnosisStrategy", - "source_mapping": { - "start": 584, - "length": 6684, - "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", - "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "recoverToGnosis(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in GnosisStrategy.recoverToGnosis(address,uint256) (contracts/v2/strategies/GnosisStrategy.sol#142-145):\n\tExternal calls:\n\t- IERC20(token).safeTransfer(gnosisSafeWallet,amount) (contracts/v2/strategies/GnosisStrategy.sol#143)\n\tEvent emitted after the call(s):\n\t- CommonEventsAndErrors.TokenRecovered(gnosisSafeWallet,token,amount) (contracts/v2/strategies/GnosisStrategy.sol#144)\n", - "markdown": "Reentrancy in [GnosisStrategy.recoverToGnosis(address,uint256)](contracts/v2/strategies/GnosisStrategy.sol#L142-L145):\n\tExternal calls:\n\t- [IERC20(token).safeTransfer(gnosisSafeWallet,amount)](contracts/v2/strategies/GnosisStrategy.sol#L143)\n\tEvent emitted after the call(s):\n\t- [CommonEventsAndErrors.TokenRecovered(gnosisSafeWallet,token,amount)](contracts/v2/strategies/GnosisStrategy.sol#L144)\n", - "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L142-L145", - "id": "d9bd0a33246588c83983d63975a9ce55470568eeff09e037f055b8e7122562e2", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "recoverToken", - "source_mapping": { - "start": 2334, - "length": 206, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [67, 68, 69, 70, 71], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "recoverToken(address,address,uint256)" - } - }, - { - "type": "node", - "name": "IERC20(token).safeTransfer(to,amount)", - "source_mapping": { - "start": 2446, - "length": 38, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [68], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "recoverToken", - "source_mapping": { - "start": 2334, - "length": 206, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [67, 68, 69, 70, 71], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "recoverToken(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "RecoveredToken(token,to,amount)", - "source_mapping": { - "start": 2495, - "length": 38, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [70], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "recoverToken", - "source_mapping": { - "start": 2334, - "length": 206, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [67, 68, 69, 70, 71], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "AuraStaking", - "source_mapping": { - "start": 604, - "length": 5204, - "filename_relative": "contracts/amo/AuraStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", - "filename_short": "contracts/amo/AuraStaking.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "recoverToken(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in AuraStaking.recoverToken(address,address,uint256) (contracts/amo/AuraStaking.sol#67-71):\n\tExternal calls:\n\t- IERC20(token).safeTransfer(to,amount) (contracts/amo/AuraStaking.sol#68)\n\tEvent emitted after the call(s):\n\t- RecoveredToken(token,to,amount) (contracts/amo/AuraStaking.sol#70)\n", - "markdown": "Reentrancy in [AuraStaking.recoverToken(address,address,uint256)](contracts/amo/AuraStaking.sol#L67-L71):\n\tExternal calls:\n\t- [IERC20(token).safeTransfer(to,amount)](contracts/amo/AuraStaking.sol#L68)\n\tEvent emitted after the call(s):\n\t- [RecoveredToken(token,to,amount)](contracts/amo/AuraStaking.sol#L70)\n", - "first_markdown_element": "contracts/amo/AuraStaking.sol#L67-L71", - "id": "721f7e4ea8f943fb92b4b72846f0042313e2b5e55c2edcd24d2ab5f7aab87665", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "recoverToken", - "source_mapping": { - "start": 11012, - "length": 197, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [274, 275, 276, 277, 278], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "recoverToken(address,address,uint256)" - } - }, - { - "type": "node", - "name": "IERC20(token).safeTransfer(to,amount)", - "source_mapping": { - "start": 11115, - "length": 38, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [275], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "recoverToken", - "source_mapping": { - "start": 11012, - "length": 197, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [274, 275, 276, 277, 278], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "recoverToken(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "RecoveredToken(token,to,amount)", - "source_mapping": { - "start": 11164, - "length": 38, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [277], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "recoverToken", - "source_mapping": { - "start": 11012, - "length": 197, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [274, 275, 276, 277, 278], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "recoverToken(address,address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Ramos.recoverToken(address,address,uint256) (contracts/amo/Ramos.sol#274-278):\n\tExternal calls:\n\t- IERC20(token).safeTransfer(to,amount) (contracts/amo/Ramos.sol#275)\n\tEvent emitted after the call(s):\n\t- RecoveredToken(token,to,amount) (contracts/amo/Ramos.sol#277)\n", - "markdown": "Reentrancy in [Ramos.recoverToken(address,address,uint256)](contracts/amo/Ramos.sol#L274-L278):\n\tExternal calls:\n\t- [IERC20(token).safeTransfer(to,amount)](contracts/amo/Ramos.sol#L275)\n\tEvent emitted after the call(s):\n\t- [RecoveredToken(token,to,amount)](contracts/amo/Ramos.sol#L277)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L274-L278", - "id": "a57f15edd93bacbeb09bc6f5cb3cd1b4540b96d74dac7b8b25c22b16adc633ed", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, - 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - }, - { - "type": "node", - "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", - "source_mapping": { - "start": 7012, - "length": 118, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [173, 174, 175, 176, 177], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "CollateralRemoved(msg.sender,recipient,amount)", - "source_mapping": { - "start": 7320, - "length": 53, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [182], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeCollateral", - "source_mapping": { - "start": 6498, - "length": 1031, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeCollateral(uint128,address)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleLineOfCredit.removeCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#166-190):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#173-177)\n\tEvent emitted after the call(s):\n\t- CollateralRemoved(msg.sender,recipient,amount) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#182)\n", - "markdown": "Reentrancy in [TempleLineOfCredit.removeCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L173-L177)\n\tEvent emitted after the call(s):\n\t- [CollateralRemoved(msg.sender,recipient,amount)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L182)\n", - "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190", - "id": "995ebae8f6668f6a1d468a923e261df6e2cd441ac86401c473cc53982585815d", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "removeLiquidity", - "source_mapping": { - "start": 22535, - "length": 1408, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" - } - }, - { - "type": "node", - "name": "amoStaking.withdrawAndUnwrap(bptIn,false,address(this))", - "source_mapping": { - "start": 23216, - "length": 57, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [541], - "starting_column": 9, - "ending_column": 66 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeLiquidity", - "source_mapping": { - "start": 22535, - "length": 1408, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "balancerVault.exitPool(balancerPoolId,address(this),address(this),request)", - "source_mapping": { - "start": 23283, - "length": 77, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [542], - "starting_column": 9, - "ending_column": 86 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeLiquidity", - "source_mapping": { - "start": 22535, - "length": 1408, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_tokenVault.repayProtocolToken(protocolTokenAmount)", - "source_mapping": { - "start": 23691, - "length": 51, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [551], - "starting_column": 13, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeLiquidity", - "source_mapping": { - "start": 22535, - "length": 1408, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "_tokenVault.repayQuoteToken(quoteTokenAmount)", - "source_mapping": { - "start": 23803, - "length": 45, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [555], - "starting_column": 13, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeLiquidity", - "source_mapping": { - "start": 22535, - "length": 1408, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "LiquidityRemoved(quoteTokenAmount,protocolTokenAmount,bptIn)", - "source_mapping": { - "start": 23869, - "length": 67, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [558], - "starting_column": 9, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeLiquidity", - "source_mapping": { - "start": 22535, - "length": 1408, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Ramos", - "source_mapping": { - "start": 1893, - "length": 24333, - "filename_relative": "contracts/amo/Ramos.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", - "filename_short": "contracts/amo/Ramos.sol", - "is_dependency": false, - "lines": [ - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256) (contracts/amo/Ramos.sol#522-559):\n\tExternal calls:\n\t- amoStaking.withdrawAndUnwrap(bptIn,false,address(this)) (contracts/amo/Ramos.sol#541)\n\t- balancerVault.exitPool(balancerPoolId,address(this),address(this),request) (contracts/amo/Ramos.sol#542)\n\t- _tokenVault.repayProtocolToken(protocolTokenAmount) (contracts/amo/Ramos.sol#551)\n\t- _tokenVault.repayQuoteToken(quoteTokenAmount) (contracts/amo/Ramos.sol#555)\n\tEvent emitted after the call(s):\n\t- LiquidityRemoved(quoteTokenAmount,protocolTokenAmount,bptIn) (contracts/amo/Ramos.sol#558)\n", - "markdown": "Reentrancy in [Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)](contracts/amo/Ramos.sol#L522-L559):\n\tExternal calls:\n\t- [amoStaking.withdrawAndUnwrap(bptIn,false,address(this))](contracts/amo/Ramos.sol#L541)\n\t- [balancerVault.exitPool(balancerPoolId,address(this),address(this),request)](contracts/amo/Ramos.sol#L542)\n\t- [_tokenVault.repayProtocolToken(protocolTokenAmount)](contracts/amo/Ramos.sol#L551)\n\t- [_tokenVault.repayQuoteToken(quoteTokenAmount)](contracts/amo/Ramos.sol#L555)\n\tEvent emitted after the call(s):\n\t- [LiquidityRemoved(quoteTokenAmount,protocolTokenAmount,bptIn)](contracts/amo/Ramos.sol#L558)\n", - "first_markdown_element": "contracts/amo/Ramos.sol#L522-L559", - "id": "bed2c1413f14f1f0f387a42599c99dbade4f123d221d53142cc235119defc33d", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "removeLiquidity", - "source_mapping": { - "start": 8140, - "length": 365, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [209, 210, 211, 212, 213, 214, 215], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" - } - }, - { - "type": "node", - "name": "(quoteTokenAmount,protocolTokenAmount) = ramos.removeLiquidity(_requestData,_bptAmount)", - "source_mapping": { - "start": 8277, - "length": 140, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [210, 211, 212, 213], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeLiquidity", - "source_mapping": { - "start": 8140, - "length": 365, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [209, 210, 211, 212, 213, 214, 215], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "RemoveLiquidity(quoteTokenAmount,protocolTokenAmount,_bptAmount)", - "source_mapping": { - "start": 8427, - "length": 71, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [214], - "starting_column": 9, - "ending_column": 80 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "removeLiquidity", - "source_mapping": { - "start": 8140, - "length": 365, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [209, 210, 211, 212, 213, 214, 215], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "RamosStrategy", - "source_mapping": { - "start": 1131, - "length": 9320, - "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", - "filename_short": "contracts/v2/strategies/RamosStrategy.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in RamosStrategy.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256) (contracts/v2/strategies/RamosStrategy.sol#209-215):\n\tExternal calls:\n\t- (quoteTokenAmount,protocolTokenAmount) = ramos.removeLiquidity(_requestData,_bptAmount) (contracts/v2/strategies/RamosStrategy.sol#210-213)\n\tEvent emitted after the call(s):\n\t- RemoveLiquidity(quoteTokenAmount,protocolTokenAmount,_bptAmount) (contracts/v2/strategies/RamosStrategy.sol#214)\n", - "markdown": "Reentrancy in [RamosStrategy.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)](contracts/v2/strategies/RamosStrategy.sol#L209-L215):\n\tExternal calls:\n\t- [(quoteTokenAmount,protocolTokenAmount) = ramos.removeLiquidity(_requestData,_bptAmount)](contracts/v2/strategies/RamosStrategy.sol#L210-L213)\n\tEvent emitted after the call(s):\n\t- [RemoveLiquidity(quoteTokenAmount,protocolTokenAmount,_bptAmount)](contracts/v2/strategies/RamosStrategy.sol#L214)\n", - "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L209-L215", - "id": "7c31093def50156c36e632afd1bdd7b3c7f967dee0aff539f837b6a8448615ae", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "setTlcStrategy", - "source_mapping": { - "start": 15688, - "length": 875, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, - 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTlcStrategy(address)" - } - }, - { - "type": "node", - "name": "daiToken.safeApprove(previousTrv,0)", - "source_mapping": { - "start": 16002, - "length": 36, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [394], - "starting_column": 13, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTlcStrategy", - "source_mapping": { - "start": 15688, - "length": 875, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTlcStrategy(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "daiToken.safeApprove(_trv,0)", - "source_mapping": { - "start": 16249, - "length": 29, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [402], - "starting_column": 13, - "ending_column": 42 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTlcStrategy", - "source_mapping": { - "start": 15688, - "length": 875, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTlcStrategy(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "daiToken.safeIncreaseAllowance(_trv,type()(uint256).max)", - "source_mapping": { - "start": 16292, - "length": 55, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [403], - "starting_column": 13, - "ending_column": 68 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTlcStrategy", - "source_mapping": { - "start": 15688, - "length": 875, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTlcStrategy(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "TlcStrategySet(newTlcStrategy,_trv)", - "source_mapping": { - "start": 16368, - "length": 41, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [406], - "starting_column": 9, - "ending_column": 50 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTlcStrategy", - "source_mapping": { - "start": 15688, - "length": 875, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTlcStrategy(address)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410):\n\tExternal calls:\n\t- daiToken.safeApprove(previousTrv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#394)\n\t- daiToken.safeApprove(_trv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#402)\n\t- daiToken.safeIncreaseAllowance(_trv,type()(uint256).max) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#403)\n\tEvent emitted after the call(s):\n\t- TlcStrategySet(newTlcStrategy,_trv) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#406)\n", - "markdown": "Reentrancy in [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410):\n\tExternal calls:\n\t- [daiToken.safeApprove(previousTrv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)\n\t- [daiToken.safeApprove(_trv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L402)\n\t- [daiToken.safeIncreaseAllowance(_trv,type()(uint256).max)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L403)\n\tEvent emitted after the call(s):\n\t- [TlcStrategySet(newTlcStrategy,_trv)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L406)\n", - "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410", - "id": "324c860350f8b013fe53e7e16c80f3c65372dc79913460521e82a2cd87c23a45", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shutdown(address)" - } - }, - { - "type": "node", - "name": "_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)", - "source_mapping": { - "start": 12499, - "length": 64, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [296], - "starting_column": 13, - "ending_column": 77 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + ], + "description": "Vault.redeemExposures(Exposure[]) (contracts/core/Vault.sol#117-123) has external calls inside a loop: exposures[i].redeem() (contracts/core/Vault.sol#119)\n", + "markdown": "[Vault.redeemExposures(Exposure[])](contracts/core/Vault.sol#L117-L123) has external calls inside a loop: [exposures[i].redeem()](contracts/core/Vault.sol#L119)\n", + "first_markdown_element": "contracts/core/Vault.sol#L117-L123", + "id": "fb0eb1701c9d5262a84b7e53dfc4632c0ca1d6292b4e39447df4f40eaf369003", + "check": "calls-loop", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "burn", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shutdown(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "StrategyRemoved(strategy)", - "source_mapping": { - "start": 13162, - "length": 30, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [312], - "starting_column": 9, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token0,to,amount0)", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shutdown(address)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "StrategyShutdownCreditAndDebt({strategy:strategy,token:address(_token),outstandingCredit:credits[_token],outstandingDebt:_outstandingDebt})", - "source_mapping": { - "start": 12577, - "length": 231, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [297, 298, 299, 300, 301, 302], - "starting_column": 13, - "ending_column": 15 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "shutdown", - "source_mapping": { - "start": 11822, - "length": 1632, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryReservesVault", + "start": 6213, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 131 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "shutdown(address)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319):\n\tExternal calls:\n\t- _outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy) (contracts/v2/TreasuryReservesVault.sol#296)\n\tEvent emitted after the call(s):\n\t- StrategyRemoved(strategy) (contracts/v2/TreasuryReservesVault.sol#312)\n\t- StrategyShutdownCreditAndDebt({strategy:strategy,token:address(_token),outstandingCredit:credits[_token],outstandingDebt:_outstandingDebt}) (contracts/v2/TreasuryReservesVault.sol#297-302)\n", - "markdown": "Reentrancy in [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319):\n\tExternal calls:\n\t- [_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)](contracts/v2/TreasuryReservesVault.sol#L296)\n\tEvent emitted after the call(s):\n\t- [StrategyRemoved(strategy)](contracts/v2/TreasuryReservesVault.sol#L312)\n\t- [StrategyShutdownCreditAndDebt({strategy:strategy,token:address(_token),outstandingCredit:credits[_token],outstandingDebt:_outstandingDebt})](contracts/v2/TreasuryReservesVault.sol#L297-L302)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L283-L319", - "id": "3770a3cd34d6db65975f14acb9170e3663edac9809964808500e613a8be2344e", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "trvWithdraw", - "source_mapping": { - "start": 10560, - "length": 947, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "trvWithdraw(uint256)" - } - }, - { - "type": "node", - "name": "(daiAvailable,chi,sharesAvailable) = _checkpointDaiBalance()", - "source_mapping": { - "start": 11010, - "length": 86, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [264], - "starting_column": 9, - "ending_column": 95 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "trvWithdraw", - "source_mapping": { - "start": 10560, - "length": 947, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "trvWithdraw(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "chi = pot.drip()", - "source_mapping": { - "start": 5566, - "length": 60, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_checkpointChi()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_dsrWithdrawal(sharesAmount,requestedAmount)", - "source_mapping": { - "start": 11365, - "length": 45, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [273], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "trvWithdraw", - "source_mapping": { - "start": 10560, - "length": 947, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "trvWithdraw(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "pot.exit(sharesAmount)", - "source_mapping": { - "start": 11597, - "length": 22, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [279], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "daiJoin.exit(address(this),daiAmount)", - "source_mapping": { - "start": 11629, - "length": 38, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [280], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "DaiWithdrawn(daiAmount)", - "source_mapping": { - "start": 11677, - "length": 28, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [281], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "_dsrWithdrawal(sharesAmount,requestedAmount)", - "source_mapping": { - "start": 11365, - "length": 45, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [273], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "trvWithdraw", - "source_mapping": { - "start": 10560, - "length": 947, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "trvWithdraw(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in DsrBaseStrategy.trvWithdraw(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#257-276):\n\tExternal calls:\n\t- (daiAvailable,chi,sharesAvailable) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#264)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t- _dsrWithdrawal(sharesAmount,requestedAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#273)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\t\t- _dsrWithdrawal(sharesAmount,requestedAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#273)\n", - "markdown": "Reentrancy in [DsrBaseStrategy.trvWithdraw(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L257-L276):\n\tExternal calls:\n\t- [(daiAvailable,chi,sharesAvailable) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L264)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t- [_dsrWithdrawal(sharesAmount,requestedAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L273)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\t\t- [_dsrWithdrawal(sharesAmount,requestedAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L273)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L257-L276", - "id": "0a4c8e86f10e88f7cdc66960b0dd281291f86c22d1d8b92e68909c1d477f23ac", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawAndRepay", - "source_mapping": { - "start": 8509, - "length": 786, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndRepay(uint256)" - } - }, - { - "type": "node", - "name": "(daiAvailable,chi) = _checkpointDaiBalance()", - "source_mapping": { - "start": 8690, - "length": 63, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [217], - "starting_column": 9, - "ending_column": 72 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawAndRepay", - "source_mapping": { - "start": 8509, - "length": 786, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndRepay(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "chi = pot.drip()", - "source_mapping": { - "start": 5566, - "length": 60, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_checkpointChi()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_dsrWithdrawal(sharesAmount,withdrawalAmount)", - "source_mapping": { - "start": 9025, - "length": 46, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [222], - "starting_column": 9, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawAndRepay", - "source_mapping": { - "start": 8509, - "length": 786, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndRepay(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "pot.exit(sharesAmount)", - "source_mapping": { - "start": 11597, - "length": 22, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [279], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "daiJoin.exit(address(this),daiAmount)", - "source_mapping": { - "start": 11629, - "length": 38, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [280], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "DaiWithdrawn(daiAmount)", - "source_mapping": { - "start": 11677, - "length": 28, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [281], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "_dsrWithdrawal(sharesAmount,withdrawalAmount)", - "source_mapping": { - "start": 9025, - "length": 46, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [222], - "starting_column": 9, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawAndRepay", - "source_mapping": { - "start": 8509, - "length": 786, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndRepay(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in DsrBaseStrategy.withdrawAndRepay(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#214-227):\n\tExternal calls:\n\t- (daiAvailable,chi) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#217)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t- _dsrWithdrawal(sharesAmount,withdrawalAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#222)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\t\t- _dsrWithdrawal(sharesAmount,withdrawalAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#222)\n", - "markdown": "Reentrancy in [DsrBaseStrategy.withdrawAndRepay(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L214-L227):\n\tExternal calls:\n\t- [(daiAvailable,chi) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L217)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t- [_dsrWithdrawal(sharesAmount,withdrawalAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L222)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\t\t- [_dsrWithdrawal(sharesAmount,withdrawalAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L222)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L214-L227", - "id": "38cb9f382307934e51255ca3f7d7f51604f44bc46a20af75d7f155182cf9bb95", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawAndRepayAll", - "source_mapping": { - "start": 9412, - "length": 465, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [232, 233, 234, 235, 236, 237, 238, 239, 240], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndRepayAll()" - } - }, - { - "type": "node", - "name": "(daiAvailable,sharesAvailable) = _checkpointDaiBalance()", - "source_mapping": { - "start": 9499, - "length": 74, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [233], - "starting_column": 9, - "ending_column": 83 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawAndRepayAll", - "source_mapping": { - "start": 9412, - "length": 465, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [232, 233, 234, 235, 236, 237, 238, 239, 240], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndRepayAll()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "chi = pot.drip()", - "source_mapping": { - "start": 5566, - "length": 60, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_checkpointChi()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", - "source_mapping": { - "start": 9583, - "length": 45, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [234], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawAndRepayAll", - "source_mapping": { - "start": 9412, - "length": 465, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [232, 233, 234, 235, 236, 237, 238, 239, 240], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndRepayAll()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "pot.exit(sharesAmount)", - "source_mapping": { - "start": 11597, - "length": 22, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [279], - "starting_column": 9, - "ending_column": 31 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "daiJoin.exit(address(this),daiAmount)", - "source_mapping": { - "start": 11629, - "length": 38, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [280], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "DaiWithdrawn(daiAmount)", - "source_mapping": { - "start": 11677, - "length": 28, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [281], - "starting_column": 9, - "ending_column": 37 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_dsrWithdrawal", - "source_mapping": { - "start": 11513, - "length": 199, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [278, 279, 280, 281, 282], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_dsrWithdrawal(uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - }, - { - "type": "node", - "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", - "source_mapping": { - "start": 9583, - "length": 45, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [234], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawAndRepayAll", - "source_mapping": { - "start": 9412, - "length": 465, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [232, 233, 234, 235, 236, 237, 238, 239, 240], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdrawAndRepayAll()" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in DsrBaseStrategy.withdrawAndRepayAll() (contracts/v2/strategies/DsrBaseStrategy.sol#232-240):\n\tExternal calls:\n\t- (daiAvailable,sharesAvailable) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#233)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#234)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\t\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#234)\n", - "markdown": "Reentrancy in [DsrBaseStrategy.withdrawAndRepayAll()](contracts/v2/strategies/DsrBaseStrategy.sol#L232-L240):\n\tExternal calls:\n\t- [(daiAvailable,sharesAvailable) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L233)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L234)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\t\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L234)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L232-L240", - "id": "4ba8e3c4596e10b0920e312a0648a8fa3ef9456ad23cffc62074dc7f78916f68", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "adhocPayment", - "source_mapping": { - "start": 2841, - "length": 284, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [83, 84, 85, 86, 87, 88], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "adhocPayment(address,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransfer(TEMPLE,_to,_amount)", - "source_mapping": { - "start": 3038, - "length": 44, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [86], - "starting_column": 9, - "ending_column": 53 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "adhocPayment", - "source_mapping": { - "start": 2841, - "length": 284, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [83, 84, 85, 86, 87, 88], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "adhocPayment(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "Claimed(_to,_amount)", - "source_mapping": { - "start": 3092, - "length": 26, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [87], - "starting_column": 9, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "adhocPayment", - "source_mapping": { - "start": 2841, - "length": 284, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [83, 84, 85, 86, 87, 88], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "adhocPayment(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleTeamPayments.adhocPayment(address,uint256) (contracts/admin/TempleTeamPayments.sol#83-88):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(TEMPLE,_to,_amount) (contracts/admin/TempleTeamPayments.sol#86)\n\tEvent emitted after the call(s):\n\t- Claimed(_to,_amount) (contracts/admin/TempleTeamPayments.sol#87)\n", - "markdown": "Reentrancy in [TempleTeamPayments.adhocPayment(address,uint256)](contracts/admin/TempleTeamPayments.sol#L83-L88):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(TEMPLE,_to,_amount)](contracts/admin/TempleTeamPayments.sol#L86)\n\tEvent emitted after the call(s):\n\t- [Claimed(_to,_amount)](contracts/admin/TempleTeamPayments.sol#L87)\n", - "first_markdown_element": "contracts/admin/TempleTeamPayments.sol#L83-L88", - "id": "081d1dfdebd16cea0856cb988c13c62e2d2d6e5c3fbd25c36620643fb11a0000", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "claim", - "source_mapping": { - "start": 2480, - "length": 355, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77, 78, 79, 80, 81], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "claim()" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransfer(TEMPLE,msg.sender,claimable)", - "source_mapping": { - "start": 2730, - "length": 53, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [79], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claim", - "source_mapping": { - "start": 2480, - "length": 355, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77, 78, 79, 80, 81], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "claim()" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "Claimed(msg.sender,claimable)", - "source_mapping": { - "start": 2793, - "length": 35, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [80], - "starting_column": 9, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claim", - "source_mapping": { - "start": 2480, - "length": 355, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77, 78, 79, 80, 81], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "claim()" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleTeamPayments.claim() (contracts/admin/TempleTeamPayments.sol#74-81):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(TEMPLE,msg.sender,claimable) (contracts/admin/TempleTeamPayments.sol#79)\n\tEvent emitted after the call(s):\n\t- Claimed(msg.sender,claimable) (contracts/admin/TempleTeamPayments.sol#80)\n", - "markdown": "Reentrancy in [TempleTeamPayments.claim()](contracts/admin/TempleTeamPayments.sol#L74-L81):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(TEMPLE,msg.sender,claimable)](contracts/admin/TempleTeamPayments.sol#L79)\n\tEvent emitted after the call(s):\n\t- [Claimed(msg.sender,claimable)](contracts/admin/TempleTeamPayments.sol#L80)\n", - "first_markdown_element": "contracts/admin/TempleTeamPayments.sol#L74-L81", - "id": "5122a045d2e21480d0560d2c58820df1a98500cfc6453d3088b53c090e7d16e3", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "claim", - "source_mapping": { - "start": 2481, - "length": 452, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsV2", - "source_mapping": { - "start": 346, - "length": 2589, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "claim(uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransfer(temple,msg.sender,_claimAmount)", - "source_mapping": { - "start": 2822, - "length": 56, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [83], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claim", - "source_mapping": { - "start": 2481, - "length": 452, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsV2", - "source_mapping": { - "start": 346, - "length": 2589, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "claim(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "Claimed(msg.sender,_claimAmount)", - "source_mapping": { - "start": 2888, - "length": 38, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [84], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claim", - "source_mapping": { - "start": 2481, - "length": 452, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsV2", - "source_mapping": { - "start": 346, - "length": 2589, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "claim(uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleTeamPaymentsV2.claim(uint256) (contracts/admin/TempleTeamPaymentsV2.sol#74-85):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(temple,msg.sender,_claimAmount) (contracts/admin/TempleTeamPaymentsV2.sol#83)\n\tEvent emitted after the call(s):\n\t- Claimed(msg.sender,_claimAmount) (contracts/admin/TempleTeamPaymentsV2.sol#84)\n", - "markdown": "Reentrancy in [TempleTeamPaymentsV2.claim(uint256)](contracts/admin/TempleTeamPaymentsV2.sol#L74-L85):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(temple,msg.sender,_claimAmount)](contracts/admin/TempleTeamPaymentsV2.sol#L83)\n\tEvent emitted after the call(s):\n\t- [Claimed(msg.sender,_claimAmount)](contracts/admin/TempleTeamPaymentsV2.sol#L84)\n", - "first_markdown_element": "contracts/admin/TempleTeamPaymentsV2.sol#L74-L85", - "id": "e805076f6ba37558b2d1e1e33a36ca2141157b088d4472056b82f8af89078bb2", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - }, - { - "type": "node", - "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3194, - "length": 56, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "RevenueClaimed(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3260, - "length": 62, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [92], - "starting_column": 9, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93):\n\tExternal calls:\n\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tEvent emitted after the call(s):\n\t- RevenueClaimed(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#92)\n", - "markdown": "Reentrancy in [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93):\n\tExternal calls:\n\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tEvent emitted after the call(s):\n\t- [RevenueClaimed(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L92)\n", - "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L80-L93", - "id": "d8563f03511a537e7bffa702571db6c52a8f76800b24690b23270dd982c4ccc2", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "createExposure", - "source_mapping": { - "start": 1322, - "length": 415, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createExposure(string,string,IERC20)" - } - }, - { - "type": "node", - "name": "exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)", - "source_mapping": { - "start": 1526, - "length": 81, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [51], - "starting_column": 9, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "createExposure", - "source_mapping": { - "start": 1322, - "length": 415, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createExposure(string,string,IERC20)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "CreateExposure(address(exposure),address(pools[revalToken]))", - "source_mapping": { - "start": 1664, - "length": 66, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [53], - "starting_column": 9, - "ending_column": 75 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "createExposure", - "source_mapping": { - "start": 1322, - "length": 415, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createExposure(string,string,IERC20)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in OpsManager.createExposure(string,string,IERC20) (contracts/core/OpsManager.sol#45-54):\n\tExternal calls:\n\t- exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools) (contracts/core/OpsManager.sol#51)\n\tEvent emitted after the call(s):\n\t- CreateExposure(address(exposure),address(pools[revalToken])) (contracts/core/OpsManager.sol#53)\n", - "markdown": "Reentrancy in [OpsManager.createExposure(string,string,IERC20)](contracts/core/OpsManager.sol#L45-L54):\n\tExternal calls:\n\t- [exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)](contracts/core/OpsManager.sol#L51)\n\tEvent emitted after the call(s):\n\t- [CreateExposure(address(exposure),address(pools[revalToken]))](contracts/core/OpsManager.sol#L53)\n", - "first_markdown_element": "contracts/core/OpsManager.sol#L45-L54", - "id": "4c0848edc4ba02c1e3d1ebe7d87498d178e87ad8a446b774ebd37d6847435833", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "createVaultInstance", - "source_mapping": { - "start": 1960, - "length": 804, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createVaultInstance(string,string,uint256,uint256,Rational,uint256)" - } - }, - { - "type": "node", - "name": "templeExposure.setMinterState(address(vault),true)", - "source_mapping": { - "start": 2656, - "length": 51, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [87], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "createVaultInstance", - "source_mapping": { - "start": 1960, - "length": 804, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createVaultInstance(string,string,uint256,uint256,Rational,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "CreateVaultInstance(address(vault))", - "source_mapping": { - "start": 2717, - "length": 40, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [88], - "starting_column": 9, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "createVaultInstance", - "source_mapping": { - "start": 1960, - "length": 804, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "createVaultInstance(string,string,uint256,uint256,Rational,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in OpsManager.createVaultInstance(string,string,uint256,uint256,Rational,uint256) (contracts/core/OpsManager.sol#63-89):\n\tExternal calls:\n\t- templeExposure.setMinterState(address(vault),true) (contracts/core/OpsManager.sol#87)\n\tEvent emitted after the call(s):\n\t- CreateVaultInstance(address(vault)) (contracts/core/OpsManager.sol#88)\n", - "markdown": "Reentrancy in [OpsManager.createVaultInstance(string,string,uint256,uint256,Rational,uint256)](contracts/core/OpsManager.sol#L63-L89):\n\tExternal calls:\n\t- [templeExposure.setMinterState(address(vault),true)](contracts/core/OpsManager.sol#L87)\n\tEvent emitted after the call(s):\n\t- [CreateVaultInstance(address(vault))](contracts/core/OpsManager.sol#L88)\n", - "first_markdown_element": "contracts/core/OpsManager.sol#L63-L89", - "id": "df955297def3da87ad4df693d7ae4b7e7f50baa97a7182d7ae0ddc97fdb09441", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - }, - { - "type": "node", - "name": "claimFor(account)", - "source_mapping": { - "start": 2441, - "length": 17, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [70], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3194, - "length": 56, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "DecreaseShares(account,amount)", - "source_mapping": { - "start": 2614, - "length": 36, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [76], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "decreaseShares", - "source_mapping": { - "start": 2355, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72, 73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "decreaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#70)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tEvent emitted after the call(s):\n\t- DecreaseShares(account,amount) (contracts/core/TreasuryFarmingRevenue.sol#76)\n", - "markdown": "Reentrancy in [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L70)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tEvent emitted after the call(s):\n\t- [DecreaseShares(account,amount)](contracts/core/TreasuryFarmingRevenue.sol#L76)\n", - "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L69-L77", - "id": "10f84609b6b87bcc768aa396dd6ac6045289ca78c3cb64ee97e4437cfb7c006a", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - }, - { - "type": "node", - "name": "paymentContract.initialize(_token)", - "source_mapping": { - "start": 3274, - "length": 34, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [89], - "starting_column": 9, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "paymentContract.setAllocations(_dests,_allocations)", - "source_mapping": { - "start": 3318, - "length": 52, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [90], - "starting_column": 9, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "paymentContract.transferOwnership(msg.sender)", - "source_mapping": { - "start": 3381, - "length": 45, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [92], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)", - "source_mapping": { - "start": 3473, - "length": 165, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [95, 96, 97, 98, 99, 100], - "starting_column": 13, - "ending_column": 14 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "FundingDeployed(lastPaidEpoch,_dests,_allocations,address(paymentContract))", - "source_mapping": { - "start": 3715, - "length": 141, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [104, 105, 106, 107, 108, 109], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "deployPayouts", - "source_mapping": { - "start": 2818, - "length": 1078, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#79-112):\n\tExternal calls:\n\t- paymentContract.initialize(_token) (contracts/admin/TempleTeamPaymentsFactory.sol#89)\n\t- paymentContract.setAllocations(_dests,_allocations) (contracts/admin/TempleTeamPaymentsFactory.sol#90)\n\t- paymentContract.transferOwnership(msg.sender) (contracts/admin/TempleTeamPaymentsFactory.sol#92)\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#95-100)\n\tEvent emitted after the call(s):\n\t- FundingDeployed(lastPaidEpoch,_dests,_allocations,address(paymentContract)) (contracts/admin/TempleTeamPaymentsFactory.sol#104-109)\n", - "markdown": "Reentrancy in [TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112):\n\tExternal calls:\n\t- [paymentContract.initialize(_token)](contracts/admin/TempleTeamPaymentsFactory.sol#L89)\n\t- [paymentContract.setAllocations(_dests,_allocations)](contracts/admin/TempleTeamPaymentsFactory.sol#L90)\n\t- [paymentContract.transferOwnership(msg.sender)](contracts/admin/TempleTeamPaymentsFactory.sol#L92)\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L95-L100)\n\tEvent emitted after the call(s):\n\t- [FundingDeployed(lastPaidEpoch,_dests,_allocations,address(paymentContract))](contracts/admin/TempleTeamPaymentsFactory.sol#L104-L109)\n", - "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112", - "id": "e09076945359fed962d2ff6dfd37bfd369cd1b53e0192377da32895ae9a9f829", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "depositFor", - "source_mapping": { - "start": 7408, - "length": 773, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "depositFor(address,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount)", - "source_mapping": { - "start": 7964, - "length": 82, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [207], - "starting_column": 13, - "ending_column": 95 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "depositFor", - "source_mapping": { - "start": 7408, - "length": 773, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "depositFor(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "templeExposureToken.mint(address(this),_amount)", - "source_mapping": { - "start": 8060, - "length": 48, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [208], - "starting_column": 13, - "ending_column": 61 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "depositFor", - "source_mapping": { - "start": 7408, - "length": 773, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "depositFor(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "Deposit(_account,_amount,amountStaked)", - "source_mapping": { - "start": 8129, - "length": 45, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [211], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "depositFor", - "source_mapping": { - "start": 7408, - "length": 773, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "depositFor(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Vault.depositFor(address,uint256) (contracts/core/Vault.sol#196-212):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount) (contracts/core/Vault.sol#207)\n\t- templeExposureToken.mint(address(this),_amount) (contracts/core/Vault.sol#208)\n\tEvent emitted after the call(s):\n\t- Deposit(_account,_amount,amountStaked) (contracts/core/Vault.sol#211)\n", - "markdown": "Reentrancy in [Vault.depositFor(address,uint256)](contracts/core/Vault.sol#L196-L212):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount)](contracts/core/Vault.sol#L207)\n\t- [templeExposureToken.mint(address(this),_amount)](contracts/core/Vault.sol#L208)\n\tEvent emitted after the call(s):\n\t- [Deposit(_account,_amount,amountStaked)](contracts/core/Vault.sol#L211)\n", - "first_markdown_element": "contracts/core/Vault.sol#L196-L212", - "id": "689116f4828c0f788fc592eb0a125792986e1b61e0aa46a6186d628790346b41", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "directPayouts", - "source_mapping": { - "start": 4101, - "length": 829, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "directPayouts(IERC20,address[],uint256[])" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)", - "source_mapping": { - "start": 4642, - "length": 59, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [133], - "starting_column": 13, - "ending_column": 72 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "directPayouts", - "source_mapping": { - "start": 4101, - "length": 829, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "directPayouts(IERC20,address[],uint256[])" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "FundingPaid(lastPaidEpoch,_dests,_allocations)", - "source_mapping": { - "start": 4870, - "length": 53, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 62 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "directPayouts", - "source_mapping": { - "start": 4101, - "length": 829, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "directPayouts(IERC20,address[],uint256[])" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[]) (contracts/admin/TempleTeamPaymentsFactory.sol#119-143):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,dest,value) (contracts/admin/TempleTeamPaymentsFactory.sol#133)\n\tEvent emitted after the call(s):\n\t- FundingPaid(lastPaidEpoch,_dests,_allocations) (contracts/admin/TempleTeamPaymentsFactory.sol#142)\n", - "markdown": "Reentrancy in [TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[])](contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)](contracts/admin/TempleTeamPaymentsFactory.sol#L133)\n\tEvent emitted after the call(s):\n\t- [FundingPaid(lastPaidEpoch,_dests,_allocations)](contracts/admin/TempleTeamPaymentsFactory.sol#L142)\n", - "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143", - "id": "6c80a1f2386bfefc5e825932ef0f67802c5f2af3857235cf886592ad9e720a6d", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - }, - { - "type": "node", - "name": "claimFor(account)", - "source_mapping": { - "start": 2073, - "length": 17, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [57], - "starting_column": 9, - "ending_column": 26 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", - "source_mapping": { - "start": 3194, - "length": 56, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [91], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claimFor", - "source_mapping": { - "start": 2718, - "length": 611, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "claimFor(address)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls_sending_eth" } - }, - { - "type": "node", - "name": "IncreaseShares(account,amount)", - "source_mapping": { - "start": 2246, - "length": 36, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [63], - "starting_column": 9, - "ending_column": 45 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "increaseShares", - "source_mapping": { - "start": 1987, - "length": 302, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [56, 57, 58, 59, 60, 61, 62, 63, 64], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryFarmingRevenue", - "source_mapping": { - "start": 547, - "length": 3059, - "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", - "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "increaseShares(address,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#57)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tEvent emitted after the call(s):\n\t- IncreaseShares(account,amount) (contracts/core/TreasuryFarmingRevenue.sol#63)\n", - "markdown": "Reentrancy in [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L57)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tEvent emitted after the call(s):\n\t- [IncreaseShares(account,amount)](contracts/core/TreasuryFarmingRevenue.sol#L63)\n", - "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L56-L64", - "id": "d4561252e63b6b2b82404c62a37f3524f0af810644056f99e52c4028a071621f", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "lockFor", - "source_mapping": { - "start": 943, - "length": 494, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LockedOGTemple", - "source_mapping": { - "start": 213, - "length": 2143, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "lockFor(address,uint256,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(OG_TEMPLE,msg.sender,address(this),_amountOGTemple)", - "source_mapping": { - "start": 1247, - "length": 111, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [46, 47, 48, 49, 50, 51], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "lockFor", - "source_mapping": { - "start": 943, - "length": 494, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LockedOGTemple", - "source_mapping": { - "start": 213, - "length": 2143, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "lockFor(address,uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "OGTempleLocked(_staker,_amountOGTemple,_lockedUntilTimestamp)", - "source_mapping": { - "start": 1364, - "length": 68, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [52], - "starting_column": 5, - "ending_column": 73 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "lockFor", - "source_mapping": { - "start": 943, - "length": 494, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LockedOGTemple", - "source_mapping": { - "start": 213, - "length": 2143, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "lockFor(address,uint256,uint256)" - } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in LockedOGTemple.lockFor(address,uint256,uint256) (contracts/deprecated/LockedOGTemple.sol#35-53):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(OG_TEMPLE,msg.sender,address(this),_amountOGTemple) (contracts/deprecated/LockedOGTemple.sol#46-51)\n\tEvent emitted after the call(s):\n\t- OGTempleLocked(_staker,_amountOGTemple,_lockedUntilTimestamp) (contracts/deprecated/LockedOGTemple.sol#52)\n", - "markdown": "Reentrancy in [LockedOGTemple.lockFor(address,uint256,uint256)](contracts/deprecated/LockedOGTemple.sol#L35-L53):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(OG_TEMPLE,msg.sender,address(this),_amountOGTemple)](contracts/deprecated/LockedOGTemple.sol#L46-L51)\n\tEvent emitted after the call(s):\n\t- [OGTempleLocked(_staker,_amountOGTemple,_lockedUntilTimestamp)](contracts/deprecated/LockedOGTemple.sol#L52)\n", - "first_markdown_element": "contracts/deprecated/LockedOGTemple.sol#L35-L53", - "id": "4230808e1cd7a4f58313604bd2841ce355116b1beb66b33f45e8990f931fb60f", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "recoverToken", - "source_mapping": { - "start": 2526, - "length": 244, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultEarlyWithdraw", - "source_mapping": { - "start": 548, - "length": 2224, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "recoverToken(address,address,uint256)" - } - }, - { - "type": "node", - "name": "IERC20(token).safeTransfer(to,amount)", - "source_mapping": { - "start": 2677, - "length": 38, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [75], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "recoverToken", - "source_mapping": { - "start": 2526, - "length": 244, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultEarlyWithdraw", - "source_mapping": { - "start": 548, - "length": 2224, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "recoverToken(address,address,uint256)" + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token1,to,amount1)", + "source_mapping": { + "start": 6258, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 132 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token0,to,amount0)", + "source_mapping": { + "start": 6213, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 131 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token1,to,amount1)", + "source_mapping": { + "start": 6258, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 132 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 6426, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 136 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "price0CumulativeLast" + } + }, + { + "type": "node", + "name": "price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed", + "source_mapping": { + "start": 3587, + "length": 88, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 86 + ], + "starting_column": 13, + "ending_column": 101 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "price0CumulativeLast" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 6426, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 136 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "price1CumulativeLast" + } + }, + { + "type": "node", + "name": "price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed", + "source_mapping": { + "start": 3689, + "length": 88, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 87 + ], + "starting_column": 13, + "ending_column": 101 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "price1CumulativeLast" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "TokenRecovered(token,to,amount)", - "source_mapping": { - "start": 2725, - "length": 38, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [76], - "starting_column": 9, - "ending_column": 47 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "recoverToken", - "source_mapping": { - "start": 2526, - "length": 244, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [73, 74, 75, 76, 77], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultEarlyWithdraw", - "source_mapping": { - "start": 548, - "length": 2224, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "recoverToken(address,address,uint256)" + ], + "description": "Reentrancy in TempleUniswapV2Pair.burn(address) (contracts/amm/TempleUniswapV2Pair.sol#118-138):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0) (contracts/amm/TempleUniswapV2Pair.sol#131)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1) (contracts/amm/TempleUniswapV2Pair.sol#132)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\tState variables written after the call(s):\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed (contracts/amm/TempleUniswapV2Pair.sol#86)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n\t\t- price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed (contracts/amm/TempleUniswapV2Pair.sol#87)\n", + "markdown": "Reentrancy in [TempleUniswapV2Pair.burn(address)](contracts/amm/TempleUniswapV2Pair.sol#L118-L138):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0)](contracts/amm/TempleUniswapV2Pair.sol#L131)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1)](contracts/amm/TempleUniswapV2Pair.sol#L132)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\tState variables written after the call(s):\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed](contracts/amm/TempleUniswapV2Pair.sol#L86)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n\t\t- [price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed](contracts/amm/TempleUniswapV2Pair.sol#L87)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L118-L138", + "id": "d6f7e9923264688e14af684f9180e869a190d782f4a8ab55d1efa22ac6b2ec72", + "check": "reentrancy-benign", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token0,to,amount0Out)", + "source_mapping": { + "start": 7388, + "length": 38, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 153 + ], + "starting_column": 29, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token1,to,amount1Out)", + "source_mapping": { + "start": 7490, + "length": 38, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 154 + ], + "starting_column": 29, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)", + "source_mapping": { + "start": 7593, + "length": 76, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 155 + ], + "starting_column": 30, + "ending_column": 106 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token0,to,amount0Out)", + "source_mapping": { + "start": 7388, + "length": 38, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 153 + ], + "starting_column": 29, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token1,to,amount1Out)", + "source_mapping": { + "start": 7490, + "length": 38, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 154 + ], + "starting_column": 29, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)", + "source_mapping": { + "start": 7593, + "length": 76, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 155 + ], + "starting_column": 30, + "ending_column": 106 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 8457, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 168 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "price0CumulativeLast" + } + }, + { + "type": "node", + "name": "price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed", + "source_mapping": { + "start": 3587, + "length": 88, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 86 + ], + "starting_column": 13, + "ending_column": 101 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "price0CumulativeLast" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 8457, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 168 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "price1CumulativeLast" + } + }, + { + "type": "node", + "name": "price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed", + "source_mapping": { + "start": 3689, + "length": 88, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 87 + ], + "starting_column": 13, + "ending_column": 101 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "price1CumulativeLast" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in VaultEarlyWithdraw.recoverToken(address,address,uint256) (contracts/core/VaultEarlyWithdraw.sol#73-77):\n\tExternal calls:\n\t- IERC20(token).safeTransfer(to,amount) (contracts/core/VaultEarlyWithdraw.sol#75)\n\tEvent emitted after the call(s):\n\t- TokenRecovered(token,to,amount) (contracts/core/VaultEarlyWithdraw.sol#76)\n", - "markdown": "Reentrancy in [VaultEarlyWithdraw.recoverToken(address,address,uint256)](contracts/core/VaultEarlyWithdraw.sol#L73-L77):\n\tExternal calls:\n\t- [IERC20(token).safeTransfer(to,amount)](contracts/core/VaultEarlyWithdraw.sol#L75)\n\tEvent emitted after the call(s):\n\t- [TokenRecovered(token,to,amount)](contracts/core/VaultEarlyWithdraw.sol#L76)\n", - "first_markdown_element": "contracts/core/VaultEarlyWithdraw.sol#L73-L77", - "id": "1c3c00beda0eb4b0661cc31987f0cf4c864705a836f5da0004529d20a3b860b8", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "redeemAmount", - "source_mapping": { - "start": 3060, - "length": 296, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [104, 105, 106, 107, 108, 109, 110, 111, 112, 113], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Exposure", - "source_mapping": { - "start": 362, - "length": 3820, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in TempleUniswapV2Pair.swap(uint256,uint256,address,bytes) (contracts/amm/TempleUniswapV2Pair.sol#141-170):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0Out) (contracts/amm/TempleUniswapV2Pair.sol#153)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1Out) (contracts/amm/TempleUniswapV2Pair.sol#154)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data) (contracts/amm/TempleUniswapV2Pair.sol#155)\n\tState variables written after the call(s):\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed (contracts/amm/TempleUniswapV2Pair.sol#86)\n\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n\t\t- price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed (contracts/amm/TempleUniswapV2Pair.sol#87)\n", + "markdown": "Reentrancy in [TempleUniswapV2Pair.swap(uint256,uint256,address,bytes)](contracts/amm/TempleUniswapV2Pair.sol#L141-L170):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0Out)](contracts/amm/TempleUniswapV2Pair.sol#L153)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1Out)](contracts/amm/TempleUniswapV2Pair.sol#L154)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)](contracts/amm/TempleUniswapV2Pair.sol#L155)\n\tState variables written after the call(s):\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed](contracts/amm/TempleUniswapV2Pair.sol#L86)\n\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n\t\t- [price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed](contracts/amm/TempleUniswapV2Pair.sol#L87)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L141-L170", + "id": "4009158fb72c6a7f799d45778765abe734e526aff7ec82c4bb4384d474895f3f", + "check": "reentrancy-benign", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + }, + { + "type": "node", + "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", + "source_mapping": { + "start": 7012, + "length": 118, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 173, + 174, + 175, + 176, + 177 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", + "source_mapping": { + "start": 7012, + "length": 118, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 173, + 174, + 175, + 176, + 177 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "totalCollateral -= amount", + "source_mapping": { + "start": 7285, + "length": 25, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 181 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "totalCollateral" + } } - }, - "signature": "redeemAmount(uint256,address)" - } - }, - { - "type": "node", - "name": "liquidator.toTemple(amount,to)", - "source_mapping": { - "start": 3241, - "length": 31, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [109], - "starting_column": 13, - "ending_column": 44 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "redeemAmount", - "source_mapping": { - "start": 3060, - "length": 296, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [104, 105, 106, 107, 108, 109, 110, 111, 112, 113], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Exposure", - "source_mapping": { - "start": 362, - "length": 3820, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "redeemAmount(uint256,address)" + ], + "description": "Reentrancy in TempleLineOfCredit.removeCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#166-190):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#173-177)\n\tState variables written after the call(s):\n\t- totalCollateral -= amount (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#181)\n", + "markdown": "Reentrancy in [TempleLineOfCredit.removeCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L173-L177)\n\tState variables written after the call(s):\n\t- [totalCollateral -= amount](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L181)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190", + "id": "7e54b77ff600dbf6c2607432f645013fef59227e4ff7c91d2c9c62ef8ddf1980", + "check": "reentrancy-benign", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "createExposure", + "source_mapping": { + "start": 1322, + "length": 415, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createExposure(string,string,IERC20)" + } + }, + { + "type": "node", + "name": "exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)", + "source_mapping": { + "start": 1526, + "length": 81, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 51 + ], + "starting_column": 9, + "ending_column": 90 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "createExposure", + "source_mapping": { + "start": 1322, + "length": 415, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createExposure(string,string,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)", + "source_mapping": { + "start": 1526, + "length": 81, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 51 + ], + "starting_column": 9, + "ending_column": 90 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "createExposure", + "source_mapping": { + "start": 1322, + "length": 415, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createExposure(string,string,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "revalTokens.push(address(revalToken))", + "source_mapping": { + "start": 1617, + "length": 37, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 52 + ], + "starting_column": 9, + "ending_column": 46 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "createExposure", + "source_mapping": { + "start": 1322, + "length": 415, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createExposure(string,string,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "revalTokens" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "Redeem(address(revalToken),msg.sender,to,amount)", - "source_mapping": { - "start": 3293, - "length": 56, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [112], - "starting_column": 9, - "ending_column": 65 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "redeemAmount", - "source_mapping": { - "start": 3060, - "length": 296, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [104, 105, 106, 107, 108, 109, 110, 111, 112, 113], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Exposure", - "source_mapping": { - "start": 362, - "length": 3820, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "redeemAmount(uint256,address)" + ], + "description": "Reentrancy in OpsManager.createExposure(string,string,IERC20) (contracts/core/OpsManager.sol#45-54):\n\tExternal calls:\n\t- exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools) (contracts/core/OpsManager.sol#51)\n\tState variables written after the call(s):\n\t- revalTokens.push(address(revalToken)) (contracts/core/OpsManager.sol#52)\n", + "markdown": "Reentrancy in [OpsManager.createExposure(string,string,IERC20)](contracts/core/OpsManager.sol#L45-L54):\n\tExternal calls:\n\t- [exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)](contracts/core/OpsManager.sol#L51)\n\tState variables written after the call(s):\n\t- [revalTokens.push(address(revalToken))](contracts/core/OpsManager.sol#L52)\n", + "first_markdown_element": "contracts/core/OpsManager.sol#L45-L54", + "id": "51556a077db66dfc3240e846360a26235f1360662907e56d0702b662359b5526", + "check": "reentrancy-benign", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + }, + { + "type": "node", + "name": "claimFor(account)", + "source_mapping": { + "start": 2441, + "length": 17, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 70 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3194, + "length": 56, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "claimFor(account)", + "source_mapping": { + "start": 2441, + "length": 17, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 70 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3194, + "length": 56, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "totalShares -= amount", + "source_mapping": { + "start": 2504, + "length": 21, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 73 + ], + "starting_column": 9, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "totalShares" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Exposure.redeemAmount(uint256,address) (contracts/core/Exposure.sol#104-113):\n\tExternal calls:\n\t- liquidator.toTemple(amount,to) (contracts/core/Exposure.sol#109)\n\tEvent emitted after the call(s):\n\t- Redeem(address(revalToken),msg.sender,to,amount) (contracts/core/Exposure.sol#112)\n", - "markdown": "Reentrancy in [Exposure.redeemAmount(uint256,address)](contracts/core/Exposure.sol#L104-L113):\n\tExternal calls:\n\t- [liquidator.toTemple(amount,to)](contracts/core/Exposure.sol#L109)\n\tEvent emitted after the call(s):\n\t- [Redeem(address(revalToken),msg.sender,to,amount)](contracts/core/Exposure.sol#L112)\n", - "first_markdown_element": "contracts/core/Exposure.sol#L104-L113", - "id": "5c348eea3fa61ccb6c1609a61dfbf2ea3d76c031d344e46e4a98a0d17d2298c4", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "stakeFor", - "source_mapping": { - "start": 4887, - "length": 624, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#70)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tState variables written after the call(s):\n\t- totalShares -= amount (contracts/core/TreasuryFarmingRevenue.sol#73)\n", + "markdown": "Reentrancy in [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L70)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tState variables written after the call(s):\n\t- [totalShares -= amount](contracts/core/TreasuryFarmingRevenue.sol#L73)\n", + "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L69-L77", + "id": "0b0602eac2622c580688b404d63d57f1596371f95c0951d2b30d3754c6a94161", + "check": "reentrancy-benign", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + }, + { + "type": "node", + "name": "paymentContract.initialize(_token)", + "source_mapping": { + "start": 3274, + "length": 34, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 89 + ], + "starting_column": 9, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "paymentContract.setAllocations(_dests,_allocations)", + "source_mapping": { + "start": 3318, + "length": 52, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 90 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "paymentContract.transferOwnership(msg.sender)", + "source_mapping": { + "start": 3381, + "length": 45, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 92 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)", + "source_mapping": { + "start": 3473, + "length": 165, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "paymentContract.initialize(_token)", + "source_mapping": { + "start": 3274, + "length": 34, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 89 + ], + "starting_column": 9, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "paymentContract.setAllocations(_dests,_allocations)", + "source_mapping": { + "start": 3318, + "length": 52, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 90 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "paymentContract.transferOwnership(msg.sender)", + "source_mapping": { + "start": 3381, + "length": 45, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 92 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)", + "source_mapping": { + "start": 3473, + "length": 165, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "incrementEpoch(address(paymentContract),_totalFunding)", + "source_mapping": { + "start": 3649, + "length": 55, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 102 + ], + "starting_column": 9, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "epochsFunded" + } + }, + { + "type": "node", + "name": "epochsFunded[lastPaidEpoch] = data", + "source_mapping": { + "start": 1734, + "length": 34, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 55 + ], + "starting_column": 9, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "incrementEpoch", + "source_mapping": { + "start": 1428, + "length": 347, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "incrementEpoch(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "epochsFunded" + } } - }, - "signature": "stakeFor(address,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransferFrom(TEMPLE,msg.sender,address(this),_amountTemple)", - "source_mapping": { - "start": 5291, - "length": 76, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [131], - "starting_column": 9, - "ending_column": 85 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "stakeFor", - "source_mapping": { - "start": 4887, - "length": 624, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "stakeFor(address,uint256)" + ], + "description": "Reentrancy in TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#79-112):\n\tExternal calls:\n\t- paymentContract.initialize(_token) (contracts/admin/TempleTeamPaymentsFactory.sol#89)\n\t- paymentContract.setAllocations(_dests,_allocations) (contracts/admin/TempleTeamPaymentsFactory.sol#90)\n\t- paymentContract.transferOwnership(msg.sender) (contracts/admin/TempleTeamPaymentsFactory.sol#92)\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#95-100)\n\tState variables written after the call(s):\n\t- incrementEpoch(address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#102)\n\t\t- epochsFunded[lastPaidEpoch] = data (contracts/admin/TempleTeamPaymentsFactory.sol#55)\n", + "markdown": "Reentrancy in [TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112):\n\tExternal calls:\n\t- [paymentContract.initialize(_token)](contracts/admin/TempleTeamPaymentsFactory.sol#L89)\n\t- [paymentContract.setAllocations(_dests,_allocations)](contracts/admin/TempleTeamPaymentsFactory.sol#L90)\n\t- [paymentContract.transferOwnership(msg.sender)](contracts/admin/TempleTeamPaymentsFactory.sol#L92)\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L95-L100)\n\tState variables written after the call(s):\n\t- [incrementEpoch(address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L102)\n\t\t- [epochsFunded[lastPaidEpoch] = data](contracts/admin/TempleTeamPaymentsFactory.sol#L55)\n", + "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112", + "id": "38547e1ee698a66798b081a9551aa0d534f4641810a5486cd31cdbdd25f55313", + "check": "reentrancy-benign", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "directPayouts", + "source_mapping": { + "start": 4101, + "length": 829, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "directPayouts(IERC20,address[],uint256[])" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)", + "source_mapping": { + "start": 4642, + "length": 59, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 133 + ], + "starting_column": 13, + "ending_column": 72 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "directPayouts", + "source_mapping": { + "start": 4101, + "length": 829, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "directPayouts(IERC20,address[],uint256[])" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)", + "source_mapping": { + "start": 4642, + "length": 59, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 133 + ], + "starting_column": 13, + "ending_column": 72 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "directPayouts", + "source_mapping": { + "start": 4101, + "length": 829, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "directPayouts(IERC20,address[],uint256[])" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "incrementEpoch(address(this),totalFunding)", + "source_mapping": { + "start": 4816, + "length": 43, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 140 + ], + "starting_column": 9, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "directPayouts", + "source_mapping": { + "start": 4101, + "length": 829, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "directPayouts(IERC20,address[],uint256[])" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "epochsFunded" + } + }, + { + "type": "node", + "name": "epochsFunded[lastPaidEpoch] = data", + "source_mapping": { + "start": 1734, + "length": 34, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 55 + ], + "starting_column": 9, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "incrementEpoch", + "source_mapping": { + "start": 1428, + "length": 347, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "incrementEpoch(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "epochsFunded" + } + }, + { + "type": "node", + "name": "incrementEpoch(address(this),totalFunding)", + "source_mapping": { + "start": 4816, + "length": 43, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 140 + ], + "starting_column": 9, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "directPayouts", + "source_mapping": { + "start": 4101, + "length": 829, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "directPayouts(IERC20,address[],uint256[])" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "lastPaidEpoch" + } + }, + { + "type": "node", + "name": "data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++})", + "source_mapping": { + "start": 1542, + "length": 182, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 9, + "ending_column": 11 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "incrementEpoch", + "source_mapping": { + "start": 1428, + "length": 347, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "incrementEpoch(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "lastPaidEpoch" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "OG_TEMPLE.mint(_staker,amountOgTemple)", - "source_mapping": { - "start": 5377, - "length": 39, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [132], - "starting_column": 9, - "ending_column": 48 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "stakeFor", - "source_mapping": { - "start": 4887, - "length": 624, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "stakeFor(address,uint256)" + ], + "description": "Reentrancy in TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[]) (contracts/admin/TempleTeamPaymentsFactory.sol#119-143):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,dest,value) (contracts/admin/TempleTeamPaymentsFactory.sol#133)\n\tState variables written after the call(s):\n\t- incrementEpoch(address(this),totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#140)\n\t\t- epochsFunded[lastPaidEpoch] = data (contracts/admin/TempleTeamPaymentsFactory.sol#55)\n\t- incrementEpoch(address(this),totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#140)\n\t\t- data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++}) (contracts/admin/TempleTeamPaymentsFactory.sol#50-54)\n", + "markdown": "Reentrancy in [TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[])](contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)](contracts/admin/TempleTeamPaymentsFactory.sol#L133)\n\tState variables written after the call(s):\n\t- [incrementEpoch(address(this),totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L140)\n\t\t- [epochsFunded[lastPaidEpoch] = data](contracts/admin/TempleTeamPaymentsFactory.sol#L55)\n\t- [incrementEpoch(address(this),totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L140)\n\t\t- [data = FundingData({paymentContract:address(_paymentContract),totalFunding:_totalFunding,epoch:lastPaidEpoch ++})](contracts/admin/TempleTeamPaymentsFactory.sol#L50-L54)\n", + "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143", + "id": "e7d7cc7383e1682a576694bbc276f3a8cb1f5f6783434f8f5336ea3b0d9bf554", + "check": "reentrancy-benign", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + }, + { + "type": "node", + "name": "claimFor(account)", + "source_mapping": { + "start": 2073, + "length": 17, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 57 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3194, + "length": 56, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "claimFor(account)", + "source_mapping": { + "start": 2073, + "length": 17, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 57 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3194, + "length": 56, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "totalShares += amount", + "source_mapping": { + "start": 2136, + "length": 21, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 60 + ], + "starting_column": 9, + "ending_column": 30 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "variables_written", + "variable_name": "totalShares" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "StakeCompleted(_staker,_amountTemple,0)", - "source_mapping": { - "start": 5426, - "length": 46, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [133], - "starting_column": 9, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "stakeFor", - "source_mapping": { - "start": 4887, - "length": 624, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "stakeFor(address,uint256)" + ], + "description": "Reentrancy in TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#57)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tState variables written after the call(s):\n\t- totalShares += amount (contracts/core/TreasuryFarmingRevenue.sol#60)\n", + "markdown": "Reentrancy in [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L57)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tState variables written after the call(s):\n\t- [totalShares += amount](contracts/core/TreasuryFarmingRevenue.sol#L60)\n", + "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L56-L64", + "id": "842e91df89a71525a6459c0d1291885967545da62e3f06975364172343f78737", + "check": "reentrancy-benign", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token0,to,amount0)", + "source_mapping": { + "start": 6213, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 131 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token1,to,amount1)", + "source_mapping": { + "start": 6258, + "length": 35, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 132 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "Burn(msg.sender,amount0,amount1,to)", + "source_mapping": { + "start": 6485, + "length": 43, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 137 + ], + "starting_column": 9, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "Sync(reserve0,reserve1)", + "source_mapping": { + "start": 3918, + "length": 29, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 92 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 6426, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 136 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "burn", + "source_mapping": { + "start": 5241, + "length": 1294, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "burn(address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleStaking.stakeFor(address,uint256) (contracts/deprecated/TempleStaking.sol#123-136):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(TEMPLE,msg.sender,address(this),_amountTemple) (contracts/deprecated/TempleStaking.sol#131)\n\t- OG_TEMPLE.mint(_staker,amountOgTemple) (contracts/deprecated/TempleStaking.sol#132)\n\tEvent emitted after the call(s):\n\t- StakeCompleted(_staker,_amountTemple,0) (contracts/deprecated/TempleStaking.sol#133)\n", - "markdown": "Reentrancy in [TempleStaking.stakeFor(address,uint256)](contracts/deprecated/TempleStaking.sol#L123-L136):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(TEMPLE,msg.sender,address(this),_amountTemple)](contracts/deprecated/TempleStaking.sol#L131)\n\t- [OG_TEMPLE.mint(_staker,amountOgTemple)](contracts/deprecated/TempleStaking.sol#L132)\n\tEvent emitted after the call(s):\n\t- [StakeCompleted(_staker,_amountTemple,0)](contracts/deprecated/TempleStaking.sol#L133)\n", - "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L123-L136", - "id": "b18c05c7e4e0c35ebb87b7dbe818caa384c5e387f2a89d762dad2c9429dad39c", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "unstake", - "source_mapping": { - "start": 5711, - "length": 576, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in TempleUniswapV2Pair.burn(address) (contracts/amm/TempleUniswapV2Pair.sol#118-138):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0) (contracts/amm/TempleUniswapV2Pair.sol#131)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1) (contracts/amm/TempleUniswapV2Pair.sol#132)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\tEvent emitted after the call(s):\n\t- Burn(msg.sender,amount0,amount1,to) (contracts/amm/TempleUniswapV2Pair.sol#137)\n\t- Sync(reserve0,reserve1) (contracts/amm/TempleUniswapV2Pair.sol#92)\n\t\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#136)\n", + "markdown": "Reentrancy in [TempleUniswapV2Pair.burn(address)](contracts/amm/TempleUniswapV2Pair.sol#L118-L138):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0)](contracts/amm/TempleUniswapV2Pair.sol#L131)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1)](contracts/amm/TempleUniswapV2Pair.sol#L132)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\tEvent emitted after the call(s):\n\t- [Burn(msg.sender,amount0,amount1,to)](contracts/amm/TempleUniswapV2Pair.sol#L137)\n\t- [Sync(reserve0,reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L92)\n\t\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L136)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L118-L138", + "id": "127a57c69604f2ba16f4cd02c712486dff1968238a1c69ead2035920584207c2", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token0,to,amount0Out)", + "source_mapping": { + "start": 7388, + "length": 38, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 153 + ], + "starting_column": 29, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_safeTransfer(_token1,to,amount1Out)", + "source_mapping": { + "start": 7490, + "length": 38, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 154 + ], + "starting_column": 29, + "ending_column": 67 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)", + "source_mapping": { + "start": 7593, + "length": 76, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 155 + ], + "starting_column": 30, + "ending_column": 106 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Swap(msg.sender,amount0In,amount1In,amount0Out,amount1Out,to)", + "source_mapping": { + "start": 8516, + "length": 71, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 169 + ], + "starting_column": 9, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "Sync(reserve0,reserve1)", + "source_mapping": { + "start": 3918, + "length": 29, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 92 + ], + "starting_column": 9, + "ending_column": 38 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_update(balance0,balance1,_reserve0,_reserve1)", + "source_mapping": { + "start": 8457, + "length": 49, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 168 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "swap", + "source_mapping": { + "start": 6644, + "length": 1950, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "swap(uint256,uint256,address,bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "unstake(uint256)" - } - }, - { - "type": "node", - "name": "OG_TEMPLE.burnFrom(msg.sender,_amountOgTemple)", - "source_mapping": { - "start": 6017, - "length": 47, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [150], - "starting_column": 9, - "ending_column": 56 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "unstake", - "source_mapping": { - "start": 5711, - "length": 576, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "unstake(uint256)" + ], + "description": "Reentrancy in TempleUniswapV2Pair.swap(uint256,uint256,address,bytes) (contracts/amm/TempleUniswapV2Pair.sol#141-170):\n\tExternal calls:\n\t- _safeTransfer(_token0,to,amount0Out) (contracts/amm/TempleUniswapV2Pair.sol#153)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- _safeTransfer(_token1,to,amount1Out) (contracts/amm/TempleUniswapV2Pair.sol#154)\n\t\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n\t- IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data) (contracts/amm/TempleUniswapV2Pair.sol#155)\n\tEvent emitted after the call(s):\n\t- Swap(msg.sender,amount0In,amount1In,amount0Out,amount1Out,to) (contracts/amm/TempleUniswapV2Pair.sol#169)\n\t- Sync(reserve0,reserve1) (contracts/amm/TempleUniswapV2Pair.sol#92)\n\t\t- _update(balance0,balance1,_reserve0,_reserve1) (contracts/amm/TempleUniswapV2Pair.sol#168)\n", + "markdown": "Reentrancy in [TempleUniswapV2Pair.swap(uint256,uint256,address,bytes)](contracts/amm/TempleUniswapV2Pair.sol#L141-L170):\n\tExternal calls:\n\t- [_safeTransfer(_token0,to,amount0Out)](contracts/amm/TempleUniswapV2Pair.sol#L153)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [_safeTransfer(_token1,to,amount1Out)](contracts/amm/TempleUniswapV2Pair.sol#L154)\n\t\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n\t- [IUniswapV2Callee(to).uniswapV2Call(msg.sender,amount0Out,amount1Out,data)](contracts/amm/TempleUniswapV2Pair.sol#L155)\n\tEvent emitted after the call(s):\n\t- [Swap(msg.sender,amount0In,amount1In,amount0Out,amount1Out,to)](contracts/amm/TempleUniswapV2Pair.sol#L169)\n\t- [Sync(reserve0,reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L92)\n\t\t- [_update(balance0,balance1,_reserve0,_reserve1)](contracts/amm/TempleUniswapV2Pair.sol#L168)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L141-L170", + "id": "702607b50ee9e5b85f6e9be980d2529af09be332237e0acb690cb814df52cb87", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_burnDToken", + "source_mapping": { + "start": 29999, + "length": 1179, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + }, + { + "type": "node", + "name": "_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)", + "source_mapping": { + "start": 30398, + "length": 71, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 688 + ], + "starting_column": 9, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_burnDToken", + "source_mapping": { + "start": 29999, + "length": 1179, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)", + "source_mapping": { + "start": 31081, + "length": 90, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 708 + ], + "starting_column": 9, + "ending_column": 99 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_burnDToken", + "source_mapping": { + "start": 29999, + "length": 1179, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "SafeERC20.safeIncreaseAllowance(TEMPLE,address(EXIT_QUEUE),unstakeBalanceTemple)", - "source_mapping": { - "start": 6074, - "length": 82, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [151], - "starting_column": 9, - "ending_column": 91 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "unstake", - "source_mapping": { - "start": 5711, - "length": 576, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "unstake(uint256)" + ], + "description": "Reentrancy in TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#677-709):\n\tExternal calls:\n\t- _burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount) (contracts/v2/TreasuryReservesVault.sol#688)\n\tEvent emitted after the call(s):\n\t- StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance) (contracts/v2/TreasuryReservesVault.sol#708)\n", + "markdown": "Reentrancy in [TreasuryReservesVault._burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L677-L709):\n\tExternal calls:\n\t- [_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)](contracts/v2/TreasuryReservesVault.sol#L688)\n\tEvent emitted after the call(s):\n\t- [StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)](contracts/v2/TreasuryReservesVault.sol#L708)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L677-L709", + "id": "39b30f51cb8e0f3bb137afd7388e494f2a117088a846eb999e1fe7c8a4337328", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 12280, + "length": 502, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + }, + { + "type": "node", + "name": "(daiAvailable,sharesAvailable) = _checkpointDaiBalance()", + "source_mapping": { + "start": 12387, + "length": 74, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 295 + ], + "starting_column": 9, + "ending_column": 83 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 12280, + "length": 502, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5566, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", + "source_mapping": { + "start": 12471, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 296 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 12280, + "length": 502, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11597, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11629, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11677, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", + "source_mapping": { + "start": 12471, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 296 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_doShutdown", + "source_mapping": { + "start": 12280, + "length": 502, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_doShutdown(bytes)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "EXIT_QUEUE.join(msg.sender,unstakeBalanceTemple)", - "source_mapping": { - "start": 6166, - "length": 49, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [152], - "starting_column": 9, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "unstake", - "source_mapping": { - "start": 5711, - "length": 576, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "unstake(uint256)" + ], + "description": "Reentrancy in DsrBaseStrategy._doShutdown(bytes) (contracts/v2/strategies/DsrBaseStrategy.sol#293-303):\n\tExternal calls:\n\t- (daiAvailable,sharesAvailable) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#295)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#296)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\t\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#296)\n", + "markdown": "Reentrancy in [DsrBaseStrategy._doShutdown(bytes)](contracts/v2/strategies/DsrBaseStrategy.sol#L293-L303):\n\tExternal calls:\n\t- [(daiAvailable,sharesAvailable) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L295)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L296)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\t\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L296)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L293-L303", + "id": "2d01281faf7161866f00d8f2c914cd6f900f84c01032af46a90491363ac26414", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8061, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + }, + { + "type": "node", + "name": "shares = _rdiv(amount,_checkpointChi())", + "source_mapping": { + "start": 8248, + "length": 48, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 204 + ], + "starting_column": 9, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8061, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5566, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiDeposited(amount)", + "source_mapping": { + "start": 8307, + "length": 25, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 206 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8061, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "UnstakeCompleted(msg.sender,_amountOgTemple)", - "source_mapping": { - "start": 6226, - "length": 50, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [154], - "starting_column": 9, - "ending_column": 59 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "unstake", - "source_mapping": { - "start": 5711, - "length": 576, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "unstake(uint256)" + ], + "description": "Reentrancy in DsrBaseStrategy._dsrDeposit(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#201-209):\n\tExternal calls:\n\t- shares = _rdiv(amount,_checkpointChi()) (contracts/v2/strategies/DsrBaseStrategy.sol#204)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\tEvent emitted after the call(s):\n\t- DaiDeposited(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#206)\n", + "markdown": "Reentrancy in [DsrBaseStrategy._dsrDeposit(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L201-L209):\n\tExternal calls:\n\t- [shares = _rdiv(amount,_checkpointChi())](contracts/v2/strategies/DsrBaseStrategy.sol#L204)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\tEvent emitted after the call(s):\n\t- [DaiDeposited(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L206)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L201-L209", + "id": "d7b6d2a10c4c72fb8ed18e875155e8f19fb9578527302b34acf8ce0824782543", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11597, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11629, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11677, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleStaking.unstake(uint256) (contracts/deprecated/TempleStaking.sol#144-155):\n\tExternal calls:\n\t- OG_TEMPLE.burnFrom(msg.sender,_amountOgTemple) (contracts/deprecated/TempleStaking.sol#150)\n\t- SafeERC20.safeIncreaseAllowance(TEMPLE,address(EXIT_QUEUE),unstakeBalanceTemple) (contracts/deprecated/TempleStaking.sol#151)\n\t- EXIT_QUEUE.join(msg.sender,unstakeBalanceTemple) (contracts/deprecated/TempleStaking.sol#152)\n\tEvent emitted after the call(s):\n\t- UnstakeCompleted(msg.sender,_amountOgTemple) (contracts/deprecated/TempleStaking.sol#154)\n", - "markdown": "Reentrancy in [TempleStaking.unstake(uint256)](contracts/deprecated/TempleStaking.sol#L144-L155):\n\tExternal calls:\n\t- [OG_TEMPLE.burnFrom(msg.sender,_amountOgTemple)](contracts/deprecated/TempleStaking.sol#L150)\n\t- [SafeERC20.safeIncreaseAllowance(TEMPLE,address(EXIT_QUEUE),unstakeBalanceTemple)](contracts/deprecated/TempleStaking.sol#L151)\n\t- [EXIT_QUEUE.join(msg.sender,unstakeBalanceTemple)](contracts/deprecated/TempleStaking.sol#L152)\n\tEvent emitted after the call(s):\n\t- [UnstakeCompleted(msg.sender,_amountOgTemple)](contracts/deprecated/TempleStaking.sol#L154)\n", - "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L144-L155", - "id": "325fc57e8f6e1cecb7323feddec38c5b7507dd1c8d9a046aa8b2c362a40ad09b", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 1870, - "length": 562, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultEarlyWithdraw", - "source_mapping": { - "start": 548, - "length": 2224, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in DsrBaseStrategy._dsrWithdrawal(uint256,uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#278-282):\n\tExternal calls:\n\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n", + "markdown": "Reentrancy in [DsrBaseStrategy._dsrWithdrawal(uint256,uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L278-L282):\n\tExternal calls:\n\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L278-L282", + "id": "d35e410305415164f2083f99e160a70431f3fb38caf25144473d47103896e96b", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_mintDToken", + "source_mapping": { + "start": 28533, + "length": 1205, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + }, + { + "type": "node", + "name": "tokenConfig.dToken.mint(strategy,_newDebt)", + "source_mapping": { + "start": 29294, + "length": 43, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 657 + ], + "starting_column": 13, + "ending_column": 56 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_mintDToken", + "source_mapping": { + "start": 28533, + "length": 1205, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)", + "source_mapping": { + "start": 29641, + "length": 90, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 669 + ], + "starting_column": 9, + "ending_column": 99 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_mintDToken", + "source_mapping": { + "start": 28533, + "length": 1205, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "withdraw(address,uint256)" - } - }, - { - "type": "node", - "name": "IERC20(_vault).safeTransferFrom(msg.sender,owner(),_templeAmount)", - "source_mapping": { - "start": 2162, - "length": 67, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [62], - "starting_column": 9, - "ending_column": 76 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 1870, - "length": 562, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultEarlyWithdraw", - "source_mapping": { - "start": 548, - "length": 2224, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address,uint256)" + ], + "description": "Reentrancy in TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256) (contracts/v2/TreasuryReservesVault.sol#638-670):\n\tExternal calls:\n\t- tokenConfig.dToken.mint(strategy,_newDebt) (contracts/v2/TreasuryReservesVault.sol#657)\n\tEvent emitted after the call(s):\n\t- StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance) (contracts/v2/TreasuryReservesVault.sol#669)\n", + "markdown": "Reentrancy in [TreasuryReservesVault._mintDToken(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)](contracts/v2/TreasuryReservesVault.sol#L638-L670):\n\tExternal calls:\n\t- [tokenConfig.dToken.mint(strategy,_newDebt)](contracts/v2/TreasuryReservesVault.sol#L657)\n\tEvent emitted after the call(s):\n\t- [StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)](contracts/v2/TreasuryReservesVault.sol#L669)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L638-L670", + "id": "d06d6a53d0451e137729438d3e1093db6d5e7f0f78494fe8b2a70bd44b393675", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_withdrawFromBaseStrategy", + "source_mapping": { + "start": 25804, + "length": 2552, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)" + } + }, + { + "type": "node", + "name": "_withdrawnAmount = _baseStrategy.trvWithdraw(_withdrawFromBaseStrategyAmount)", + "source_mapping": { + "start": 27290, + "length": 85, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 608 + ], + "starting_column": 17, + "ending_column": 102 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_withdrawFromBaseStrategy", + "source_mapping": { + "start": 25804, + "length": 2552, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr))", + "source_mapping": { + "start": 27553, + "length": 319, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 21, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_withdrawFromBaseStrategy", + "source_mapping": { + "start": 25804, + "length": 2552, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)", + "source_mapping": { + "start": 30398, + "length": 71, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 688 + ], + "starting_column": 9, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_burnDToken", + "source_mapping": { + "start": 29999, + "length": 1179, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)", + "source_mapping": { + "start": 31081, + "length": 90, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 708 + ], + "starting_column": 9, + "ending_column": 99 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_burnDToken", + "source_mapping": { + "start": 29999, + "length": 1179, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_burnDToken(address,ITreasuryReservesVault.StrategyConfig,IERC20,ITreasuryReservesVault.BorrowTokenConfig,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr))", + "source_mapping": { + "start": 27553, + "length": 319, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 21, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_withdrawFromBaseStrategy", + "source_mapping": { + "start": 25804, + "length": 2552, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "templeToken.safeTransfer(msg.sender,_templeAmount)", - "source_mapping": { - "start": 2318, - "length": 51, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [65], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 1870, - "length": 562, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultEarlyWithdraw", - "source_mapping": { - "start": 548, - "length": 2224, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address,uint256)" + ], + "description": "Reentrancy in TreasuryReservesVault._withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256) (contracts/v2/TreasuryReservesVault.sol#582-632):\n\tExternal calls:\n\t- _withdrawnAmount = _baseStrategy.trvWithdraw(_withdrawFromBaseStrategyAmount) (contracts/v2/TreasuryReservesVault.sol#608)\n\t- _burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr)) (contracts/v2/TreasuryReservesVault.sol#614-621)\n\t\t- _burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount) (contracts/v2/TreasuryReservesVault.sol#688)\n\tEvent emitted after the call(s):\n\t- StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance) (contracts/v2/TreasuryReservesVault.sol#708)\n\t\t- _burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr)) (contracts/v2/TreasuryReservesVault.sol#614-621)\n", + "markdown": "Reentrancy in [TreasuryReservesVault._withdrawFromBaseStrategy(address,IERC20,ITreasuryReservesVault.BorrowTokenConfig,address,uint256)](contracts/v2/TreasuryReservesVault.sol#L582-L632):\n\tExternal calls:\n\t- [_withdrawnAmount = _baseStrategy.trvWithdraw(_withdrawFromBaseStrategyAmount)](contracts/v2/TreasuryReservesVault.sol#L608)\n\t- [_burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr))](contracts/v2/TreasuryReservesVault.sol#L614-L621)\n\t\t- [_burnedAmount = tokenConfig.dToken.burn(strategy,toBurnAmount)](contracts/v2/TreasuryReservesVault.sol#L688)\n\tEvent emitted after the call(s):\n\t- [StrategyCreditAndDebtBalance(strategy,address(token),_creditBalance,dTokenBalance)](contracts/v2/TreasuryReservesVault.sol#L708)\n\t\t- [_burnDToken(_baseStrategyAddr,strategies[_baseStrategyAddr],token,tokenConfig,_withdrawnAmount,tokenConfig.dToken.balanceOf(_baseStrategyAddr))](contracts/v2/TreasuryReservesVault.sol#L614-L621)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L582-L632", + "id": "89618dfba3ac7d15e5970daa2e83a543e99a75c999d6a13fbdd7a2d009309297", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 20001, + "length": 2092, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + }, + { + "type": "node", + "name": "_tokenVault.borrowProtocolToken(protocolTokenAmount,address(this))", + "source_mapping": { + "start": 20777, + "length": 67, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 483 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 20001, + "length": 2092, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_tokenVault.borrowQuoteToken(quoteTokenAmount,address(this))", + "source_mapping": { + "start": 20854, + "length": 61, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 484 + ], + "starting_column": 9, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 20001, + "length": 2092, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount)", + "source_mapping": { + "start": 20995, + "length": 80, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 488 + ], + "starting_column": 13, + "ending_column": 93 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 20001, + "length": 2092, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeApprove(address(balancerVault),0)", + "source_mapping": { + "start": 21254, + "length": 49, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 491 + ], + "starting_column": 17, + "ending_column": 66 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 20001, + "length": 2092, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount)", + "source_mapping": { + "start": 21321, + "length": 74, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 492 + ], + "starting_column": 17, + "ending_column": 91 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 20001, + "length": 2092, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "balancerVault.joinPool(balancerPoolId,address(this),address(this),request)", + "source_mapping": { + "start": 21538, + "length": 77, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 499 + ], + "starting_column": 13, + "ending_column": 90 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 20001, + "length": 2092, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)", + "source_mapping": { + "start": 21814, + "length": 75, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 506 + ], + "starting_column": 9, + "ending_column": 84 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 20001, + "length": 2092, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "EarlyWithdraw(msg.sender,_templeAmount)", - "source_mapping": { - "start": 2380, - "length": 45, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [67], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 1870, - "length": 562, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultEarlyWithdraw", - "source_mapping": { - "start": 548, - "length": 2224, - "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", - "filename_short": "contracts/core/VaultEarlyWithdraw.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdraw(address,uint256)" + ], + "description": "Reentrancy in Ramos.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/amo/Ramos.sol#464-513):\n\tExternal calls:\n\t- _tokenVault.borrowProtocolToken(protocolTokenAmount,address(this)) (contracts/amo/Ramos.sol#483)\n\t- _tokenVault.borrowQuoteToken(quoteTokenAmount,address(this)) (contracts/amo/Ramos.sol#484)\n\t- protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount) (contracts/amo/Ramos.sol#488)\n\t- quoteToken.safeApprove(address(balancerVault),0) (contracts/amo/Ramos.sol#491)\n\t- quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount) (contracts/amo/Ramos.sol#492)\n\t- balancerVault.joinPool(balancerPoolId,address(this),address(this),request) (contracts/amo/Ramos.sol#499)\n\tEvent emitted after the call(s):\n\t- LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) (contracts/amo/Ramos.sol#506)\n", + "markdown": "Reentrancy in [Ramos.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/amo/Ramos.sol#L464-L513):\n\tExternal calls:\n\t- [_tokenVault.borrowProtocolToken(protocolTokenAmount,address(this))](contracts/amo/Ramos.sol#L483)\n\t- [_tokenVault.borrowQuoteToken(quoteTokenAmount,address(this))](contracts/amo/Ramos.sol#L484)\n\t- [protocolToken.safeIncreaseAllowance(address(balancerVault),protocolTokenAmount)](contracts/amo/Ramos.sol#L488)\n\t- [quoteToken.safeApprove(address(balancerVault),0)](contracts/amo/Ramos.sol#L491)\n\t- [quoteToken.safeIncreaseAllowance(address(balancerVault),quoteTokenAmount)](contracts/amo/Ramos.sol#L492)\n\t- [balancerVault.joinPool(balancerPoolId,address(this),address(this),request)](contracts/amo/Ramos.sol#L499)\n\tEvent emitted after the call(s):\n\t- [LiquidityAdded(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)](contracts/amo/Ramos.sol#L506)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L464-L513", + "id": "15647cc5365c69815f9cf055275a3e256df8e9495b6e93d5e1a813c3a4db8bfa", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 7071, + "length": 365, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + }, + { + "type": "node", + "name": "(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) = ramos.addLiquidity(_requestData)", + "source_mapping": { + "start": 7185, + "length": 161, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 182, + 183, + 184, + 185, + 186 + ], + "starting_column": 9, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 7071, + "length": 365, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "AddLiquidity(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)", + "source_mapping": { + "start": 7356, + "length": 73, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 187 + ], + "starting_column": 9, + "ending_column": 82 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "addLiquidity", + "source_mapping": { + "start": 7071, + "length": 365, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "addLiquidity(IBalancerVault.JoinPoolRequest)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in VaultEarlyWithdraw.withdraw(address,uint256) (contracts/core/VaultEarlyWithdraw.sol#57-68):\n\tExternal calls:\n\t- IERC20(_vault).safeTransferFrom(msg.sender,owner(),_templeAmount) (contracts/core/VaultEarlyWithdraw.sol#62)\n\t- templeToken.safeTransfer(msg.sender,_templeAmount) (contracts/core/VaultEarlyWithdraw.sol#65)\n\tEvent emitted after the call(s):\n\t- EarlyWithdraw(msg.sender,_templeAmount) (contracts/core/VaultEarlyWithdraw.sol#67)\n", - "markdown": "Reentrancy in [VaultEarlyWithdraw.withdraw(address,uint256)](contracts/core/VaultEarlyWithdraw.sol#L57-L68):\n\tExternal calls:\n\t- [IERC20(_vault).safeTransferFrom(msg.sender,owner(),_templeAmount)](contracts/core/VaultEarlyWithdraw.sol#L62)\n\t- [templeToken.safeTransfer(msg.sender,_templeAmount)](contracts/core/VaultEarlyWithdraw.sol#L65)\n\tEvent emitted after the call(s):\n\t- [EarlyWithdraw(msg.sender,_templeAmount)](contracts/core/VaultEarlyWithdraw.sol#L67)\n", - "first_markdown_element": "contracts/core/VaultEarlyWithdraw.sol#L57-L68", - "id": "7a41d062356aa90302a9b5d0829abad146259b6d909dd1702764a586f2839691", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 8505, - "length": 349, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [220, 221, 222, 223, 224, 225, 226, 227, 228, 229], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in RamosStrategy.addLiquidity(IBalancerVault.JoinPoolRequest) (contracts/v2/strategies/RamosStrategy.sol#181-188):\n\tExternal calls:\n\t- (quoteTokenAmount,protocolTokenAmount,bptTokensStaked) = ramos.addLiquidity(_requestData) (contracts/v2/strategies/RamosStrategy.sol#182-186)\n\tEvent emitted after the call(s):\n\t- AddLiquidity(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) (contracts/v2/strategies/RamosStrategy.sol#187)\n", + "markdown": "Reentrancy in [RamosStrategy.addLiquidity(IBalancerVault.JoinPoolRequest)](contracts/v2/strategies/RamosStrategy.sol#L181-L188):\n\tExternal calls:\n\t- [(quoteTokenAmount,protocolTokenAmount,bptTokensStaked) = ramos.addLiquidity(_requestData)](contracts/v2/strategies/RamosStrategy.sol#L182-L186)\n\tEvent emitted after the call(s):\n\t- [AddLiquidity(quoteTokenAmount,protocolTokenAmount,bptTokensStaked)](contracts/v2/strategies/RamosStrategy.sol#L187)\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L181-L188", + "id": "86c6739a14ef579509f4e0190b6310b585123eb008deed594e5fdc44ec40eefe", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "borrow", + "source_mapping": { + "start": 3212, + "length": 319, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrow(IERC20,uint256)" + } + }, + { + "type": "node", + "name": "circuitBreakerProxy.preCheck(address(token),msg.sender,amount)", + "source_mapping": { + "start": 3296, + "length": 112, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrow", + "source_mapping": { + "start": 3212, + "length": 319, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrow(IERC20,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Borrow(address(token),amount)", + "source_mapping": { + "start": 3418, + "length": 35, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 94 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrow", + "source_mapping": { + "start": 3212, + "length": 319, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrow(IERC20,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "withdrawFor(address,address,uint256)" - } - }, - { - "type": "node", - "name": "templeExposureToken.redeemAmount(_amount,_to)", - "source_mapping": { - "start": 8759, - "length": 46, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [227], - "starting_column": 9, - "ending_column": 55 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 8505, - "length": 349, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [220, 221, 222, 223, 224, 225, 226, 227, 228, 229], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawFor(address,address,uint256)" + ], + "description": "Reentrancy in GnosisStrategy.borrow(IERC20,uint256) (contracts/v2/strategies/GnosisStrategy.sol#88-96):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(token),msg.sender,amount) (contracts/v2/strategies/GnosisStrategy.sol#89-93)\n\tEvent emitted after the call(s):\n\t- Borrow(address(token),amount) (contracts/v2/strategies/GnosisStrategy.sol#94)\n", + "markdown": "Reentrancy in [GnosisStrategy.borrow(IERC20,uint256)](contracts/v2/strategies/GnosisStrategy.sol#L88-L96):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(token),msg.sender,amount)](contracts/v2/strategies/GnosisStrategy.sol#L89-L93)\n\tEvent emitted after the call(s):\n\t- [Borrow(address(token),amount)](contracts/v2/strategies/GnosisStrategy.sol#L94)\n", + "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L88-L96", + "id": "816d5794942352b4b9c381b210cb4b35ac9c43889f1c7eaa1b7e32f3c1f8ab33", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7809, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 195, + 196, + 197, + 198, + 199 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + }, + { + "type": "node", + "name": "treasuryReservesVault.borrow(daiToken,amount,address(this))", + "source_mapping": { + "start": 7958, + "length": 61, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 197 + ], + "starting_column": 9, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7809, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 195, + 196, + 197, + 198, + 199 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_dsrDeposit(amount)", + "source_mapping": { + "start": 8029, + "length": 19, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 198 + ], + "starting_column": 9, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7809, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 195, + 196, + 197, + 198, + 199 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5566, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.join(address(this),amount)", + "source_mapping": { + "start": 8342, + "length": 35, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 207 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8061, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "pot.join(shares)", + "source_mapping": { + "start": 8387, + "length": 16, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 208 + ], + "starting_column": 9, + "ending_column": 25 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8061, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiDeposited(amount)", + "source_mapping": { + "start": 8307, + "length": 25, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 206 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrDeposit", + "source_mapping": { + "start": 8061, + "length": 349, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrDeposit(amount)", + "source_mapping": { + "start": 8029, + "length": 19, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 198 + ], + "starting_column": 9, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 7809, + "length": 246, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 195, + 196, + 197, + 198, + 199 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "Withdraw(_account,_amount)", - "source_mapping": { - "start": 8815, - "length": 32, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [228], - "starting_column": 9, - "ending_column": 41 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 8505, - "length": 349, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [220, 221, 222, 223, 224, 225, 226, 227, 228, 229], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawFor(address,address,uint256)" + ], + "description": "Reentrancy in DsrBaseStrategy.borrowAndDeposit(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#195-199):\n\tExternal calls:\n\t- treasuryReservesVault.borrow(daiToken,amount,address(this)) (contracts/v2/strategies/DsrBaseStrategy.sol#197)\n\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t\t- daiJoin.join(address(this),amount) (contracts/v2/strategies/DsrBaseStrategy.sol#207)\n\t\t- pot.join(shares) (contracts/v2/strategies/DsrBaseStrategy.sol#208)\n\tEvent emitted after the call(s):\n\t- DaiDeposited(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#206)\n\t\t- _dsrDeposit(amount) (contracts/v2/strategies/DsrBaseStrategy.sol#198)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.borrowAndDeposit(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L195-L199):\n\tExternal calls:\n\t- [treasuryReservesVault.borrow(daiToken,amount,address(this))](contracts/v2/strategies/DsrBaseStrategy.sol#L197)\n\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t\t- [daiJoin.join(address(this),amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L207)\n\t\t- [pot.join(shares)](contracts/v2/strategies/DsrBaseStrategy.sol#L208)\n\tEvent emitted after the call(s):\n\t- [DaiDeposited(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L206)\n\t\t- [_dsrDeposit(amount)](contracts/v2/strategies/DsrBaseStrategy.sol#L198)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L195-L199", + "id": "fa02cb67c0fadd634b5b58c828b6c896bd82d9eafb17365664e0ed1810997c50", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 2046, + "length": 229, + "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 61, + 62, + 63, + 64, + 65 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTokenBaseStrategy", + "source_mapping": { + "start": 689, + "length": 4427, + "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + }, + { + "type": "node", + "name": "treasuryReservesVault.borrow(templeToken,amount,address(this))", + "source_mapping": { + "start": 2135, + "length": 64, + "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 62 + ], + "starting_column": 9, + "ending_column": 73 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 2046, + "length": 229, + "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 61, + 62, + 63, + 64, + 65 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTokenBaseStrategy", + "source_mapping": { + "start": 689, + "length": 4427, + "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "TempleBurned(amount)", + "source_mapping": { + "start": 2209, + "length": 25, + "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 63 + ], + "starting_column": 9, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowAndDeposit", + "source_mapping": { + "start": 2046, + "length": 229, + "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 61, + 62, + 63, + 64, + 65 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTokenBaseStrategy", + "source_mapping": { + "start": 689, + "length": 4427, + "filename_relative": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/TempleTokenBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowAndDeposit(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in Vault.withdrawFor(address,address,uint256) (contracts/core/Vault.sol#220-229):\n\tExternal calls:\n\t- templeExposureToken.redeemAmount(_amount,_to) (contracts/core/Vault.sol#227)\n\tEvent emitted after the call(s):\n\t- Withdraw(_account,_amount) (contracts/core/Vault.sol#228)\n", - "markdown": "Reentrancy in [Vault.withdrawFor(address,address,uint256)](contracts/core/Vault.sol#L220-L229):\n\tExternal calls:\n\t- [templeExposureToken.redeemAmount(_amount,_to)](contracts/core/Vault.sol#L227)\n\tEvent emitted after the call(s):\n\t- [Withdraw(_account,_amount)](contracts/core/Vault.sol#L228)\n", - "first_markdown_element": "contracts/core/Vault.sol#L220-L229", - "id": "63e868ac379538e3598eed469ba9a28458891a3aec02e3895802a5953d73a01a", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 1642, - "length": 627, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LockedOGTemple", - "source_mapping": { - "start": 213, - "length": 2143, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in TempleTokenBaseStrategy.borrowAndDeposit(uint256) (contracts/v2/strategies/TempleTokenBaseStrategy.sol#61-65):\n\tExternal calls:\n\t- treasuryReservesVault.borrow(templeToken,amount,address(this)) (contracts/v2/strategies/TempleTokenBaseStrategy.sol#62)\n\tEvent emitted after the call(s):\n\t- TempleBurned(amount) (contracts/v2/strategies/TempleTokenBaseStrategy.sol#63)\n", + "markdown": "Reentrancy in [TempleTokenBaseStrategy.borrowAndDeposit(uint256)](contracts/v2/strategies/TempleTokenBaseStrategy.sol#L61-L65):\n\tExternal calls:\n\t- [treasuryReservesVault.borrow(templeToken,amount,address(this))](contracts/v2/strategies/TempleTokenBaseStrategy.sol#L62)\n\tEvent emitted after the call(s):\n\t- [TempleBurned(amount)](contracts/v2/strategies/TempleTokenBaseStrategy.sol#L63)\n", + "first_markdown_element": "contracts/v2/strategies/TempleTokenBaseStrategy.sol#L61-L65", + "id": "a4b7ebab2add03874fc7d7e0fb2176bb3cce4461f7bee4c56c5e3938077ba4b2", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "borrowMax", + "source_mapping": { + "start": 3668, + "length": 489, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowMax(IERC20)" + } + }, + { + "type": "node", + "name": "circuitBreakerProxy.preCheck(address(token),msg.sender,borrowedAmount)", + "source_mapping": { + "start": 3915, + "length": 120, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowMax", + "source_mapping": { + "start": 3668, + "length": 489, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowMax(IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Borrow(address(token),borrowedAmount)", + "source_mapping": { + "start": 4045, + "length": 43, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 110 + ], + "starting_column": 9, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowMax", + "source_mapping": { + "start": 3668, + "length": 489, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowMax(IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "withdrawFor(address,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransfer(OG_TEMPLE,_staker,entry.BalanceOGTemple)", - "source_mapping": { - "start": 2140, - "length": 65, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [79], - "starting_column": 5, - "ending_column": 70 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 1642, - "length": 627, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LockedOGTemple", - "source_mapping": { - "start": 213, - "length": 2143, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawFor(address,uint256)" + ], + "description": "Reentrancy in GnosisStrategy.borrowMax(IERC20) (contracts/v2/strategies/GnosisStrategy.sol#102-112):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(token),msg.sender,borrowedAmount) (contracts/v2/strategies/GnosisStrategy.sol#105-109)\n\tEvent emitted after the call(s):\n\t- Borrow(address(token),borrowedAmount) (contracts/v2/strategies/GnosisStrategy.sol#110)\n", + "markdown": "Reentrancy in [GnosisStrategy.borrowMax(IERC20)](contracts/v2/strategies/GnosisStrategy.sol#L102-L112):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(token),msg.sender,borrowedAmount)](contracts/v2/strategies/GnosisStrategy.sol#L105-L109)\n\tEvent emitted after the call(s):\n\t- [Borrow(address(token),borrowedAmount)](contracts/v2/strategies/GnosisStrategy.sol#L110)\n", + "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L102-L112", + "id": "c3beb3c3be57476ae61c0a7cfb0301faed9288220416d314839649d2de9f7b5e", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "borrowProtocolToken", + "source_mapping": { + "start": 3626, + "length": 353, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowProtocolToken(uint256,address)" + } + }, + { + "type": "node", + "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", + "source_mapping": { + "start": 3728, + "length": 118, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 92, + 93, + 94, + 95, + 96 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowProtocolToken", + "source_mapping": { + "start": 3626, + "length": 353, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowProtocolToken(uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "BorrowToken(address(templeToken),amount)", + "source_mapping": { + "start": 3856, + "length": 46, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 97 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowProtocolToken", + "source_mapping": { + "start": 3626, + "length": 353, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowProtocolToken(uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "OGTempleWithdraw(_staker,entry.BalanceOGTemple)", - "source_mapping": { - "start": 2211, - "length": 53, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [80], - "starting_column": 5, - "ending_column": 58 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 1642, - "length": 627, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LockedOGTemple", - "source_mapping": { - "start": 213, - "length": 2143, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawFor(address,uint256)" + ], + "description": "Reentrancy in RamosStrategy.borrowProtocolToken(uint256,address) (contracts/v2/strategies/RamosStrategy.sol#91-99):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount) (contracts/v2/strategies/RamosStrategy.sol#92-96)\n\tEvent emitted after the call(s):\n\t- BorrowToken(address(templeToken),amount) (contracts/v2/strategies/RamosStrategy.sol#97)\n", + "markdown": "Reentrancy in [RamosStrategy.borrowProtocolToken(uint256,address)](contracts/v2/strategies/RamosStrategy.sol#L91-L99):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)](contracts/v2/strategies/RamosStrategy.sol#L92-L96)\n\tEvent emitted after the call(s):\n\t- [BorrowToken(address(templeToken),amount)](contracts/v2/strategies/RamosStrategy.sol#L97)\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L91-L99", + "id": "e0ba9fad7b97dfcfdfbb8b5dcf413149d4e3c15549b5560fb8aacdf2167f9e31", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "borrowQuoteToken", + "source_mapping": { + "start": 4172, + "length": 347, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowQuoteToken(uint256,address)" + } + }, + { + "type": "node", + "name": "circuitBreakerProxy.preCheck(address(quoteToken),msg.sender,amount)", + "source_mapping": { + "start": 4271, + "length": 117, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 107, + 108, + 109, + 110, + 111 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowQuoteToken", + "source_mapping": { + "start": 4172, + "length": 347, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowQuoteToken(uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "BorrowToken(address(quoteToken),amount)", + "source_mapping": { + "start": 4398, + "length": 45, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 112 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "borrowQuoteToken", + "source_mapping": { + "start": 4172, + "length": 347, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowQuoteToken(uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in LockedOGTemple.withdrawFor(address,uint256) (contracts/deprecated/LockedOGTemple.sol#62-81):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(OG_TEMPLE,_staker,entry.BalanceOGTemple) (contracts/deprecated/LockedOGTemple.sol#79)\n\tEvent emitted after the call(s):\n\t- OGTempleWithdraw(_staker,entry.BalanceOGTemple) (contracts/deprecated/LockedOGTemple.sol#80)\n", - "markdown": "Reentrancy in [LockedOGTemple.withdrawFor(address,uint256)](contracts/deprecated/LockedOGTemple.sol#L62-L81):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(OG_TEMPLE,_staker,entry.BalanceOGTemple)](contracts/deprecated/LockedOGTemple.sol#L79)\n\tEvent emitted after the call(s):\n\t- [OGTempleWithdraw(_staker,entry.BalanceOGTemple)](contracts/deprecated/LockedOGTemple.sol#L80)\n", - "first_markdown_element": "contracts/deprecated/LockedOGTemple.sol#L62-L81", - "id": "1121dbdb9cb432f782fa1dcd86b226568d78c9cf57bb807ccdc10360eed217f4", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawToken", - "source_mapping": { - "start": 1781, - "length": 248, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [58, 59, 60, 61, 62], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in RamosStrategy.borrowQuoteToken(uint256,address) (contracts/v2/strategies/RamosStrategy.sol#106-114):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(quoteToken),msg.sender,amount) (contracts/v2/strategies/RamosStrategy.sol#107-111)\n\tEvent emitted after the call(s):\n\t- BorrowToken(address(quoteToken),amount) (contracts/v2/strategies/RamosStrategy.sol#112)\n", + "markdown": "Reentrancy in [RamosStrategy.borrowQuoteToken(uint256,address)](contracts/v2/strategies/RamosStrategy.sol#L106-L114):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(quoteToken),msg.sender,amount)](contracts/v2/strategies/RamosStrategy.sol#L107-L111)\n\tEvent emitted after the call(s):\n\t- [BorrowToken(address(quoteToken),amount)](contracts/v2/strategies/RamosStrategy.sol#L112)\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L106-L114", + "id": "bbc7a06e8819c324c8e6cacd486325e56ef60f1d5a3b26d061c95866855e9804", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "checkpointAssetBalances", + "source_mapping": { + "start": 6888, + "length": 403, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "checkpointAssetBalances()" + } + }, + { + "type": "node", + "name": "(daiBalance) = _checkpointDaiBalance()", + "source_mapping": { + "start": 7011, + "length": 48, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 176 + ], + "starting_column": 9, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "checkpointAssetBalances", + "source_mapping": { + "start": 6888, + "length": 403, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "checkpointAssetBalances()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5566, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "AssetBalancesCheckpoint(assetBalances)", + "source_mapping": { + "start": 7241, + "length": 43, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 182 + ], + "starting_column": 9, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "checkpointAssetBalances", + "source_mapping": { + "start": 6888, + "length": 403, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "checkpointAssetBalances()" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "withdrawToken(IERC20,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransfer(_token,msg.sender,_amount)", - "source_mapping": { - "start": 1916, - "length": 51, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [60], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawToken", - "source_mapping": { - "start": 1781, - "length": 248, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [58, 59, 60, 61, 62], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawToken(IERC20,uint256)" + ], + "description": "Reentrancy in DsrBaseStrategy.checkpointAssetBalances() (contracts/v2/strategies/DsrBaseStrategy.sol#173-183):\n\tExternal calls:\n\t- (daiBalance) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#176)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\tEvent emitted after the call(s):\n\t- AssetBalancesCheckpoint(assetBalances) (contracts/v2/strategies/DsrBaseStrategy.sol#182)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.checkpointAssetBalances()](contracts/v2/strategies/DsrBaseStrategy.sol#L173-L183):\n\tExternal calls:\n\t- [(daiBalance) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L176)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\tEvent emitted after the call(s):\n\t- [AssetBalancesCheckpoint(assetBalances)](contracts/v2/strategies/DsrBaseStrategy.sol#L182)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L173-L183", + "id": "91547e7be3e8d823bd0bb0f659906fbda2e7c22a3e071f2d8982d126ca2e8293", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24153, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + }, + { + "type": "node", + "name": "bptToken.safeTransferFrom(msg.sender,address(this),amount)", + "source_mapping": { + "start": 24336, + "length": 60, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 571 + ], + "starting_column": 13, + "ending_column": 73 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24153, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "bptToken.safeTransfer(address(amoStaking),amount)", + "source_mapping": { + "start": 24416, + "length": 50, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 573 + ], + "starting_column": 9, + "ending_column": 59 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24153, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "amoStaking.depositAndStake(amount)", + "source_mapping": { + "start": 24476, + "length": 34, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 574 + ], + "starting_column": 9, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24153, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "DepositAndStakeBptTokens(amount)", + "source_mapping": { + "start": 24520, + "length": 37, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 575 + ], + "starting_column": 9, + "ending_column": 46 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositAndStakeBptTokens", + "source_mapping": { + "start": 24153, + "length": 411, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "depositAndStakeBptTokens(uint256,bool)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "TokenRecovered(address(_token),_amount)", - "source_mapping": { - "start": 1977, - "length": 45, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [61], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawToken", - "source_mapping": { - "start": 1781, - "length": 248, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [58, 59, 60, 61, 62], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsFactory", - "source_mapping": { - "start": 279, - "length": 4653, - "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawToken(IERC20,uint256)" + ], + "description": "Reentrancy in Ramos.depositAndStakeBptTokens(uint256,bool) (contracts/amo/Ramos.sol#566-576):\n\tExternal calls:\n\t- bptToken.safeTransferFrom(msg.sender,address(this),amount) (contracts/amo/Ramos.sol#571)\n\t- bptToken.safeTransfer(address(amoStaking),amount) (contracts/amo/Ramos.sol#573)\n\t- amoStaking.depositAndStake(amount) (contracts/amo/Ramos.sol#574)\n\tEvent emitted after the call(s):\n\t- DepositAndStakeBptTokens(amount) (contracts/amo/Ramos.sol#575)\n", + "markdown": "Reentrancy in [Ramos.depositAndStakeBptTokens(uint256,bool)](contracts/amo/Ramos.sol#L566-L576):\n\tExternal calls:\n\t- [bptToken.safeTransferFrom(msg.sender,address(this),amount)](contracts/amo/Ramos.sol#L571)\n\t- [bptToken.safeTransfer(address(amoStaking),amount)](contracts/amo/Ramos.sol#L573)\n\t- [amoStaking.depositAndStake(amount)](contracts/amo/Ramos.sol#L574)\n\tEvent emitted after the call(s):\n\t- [DepositAndStakeBptTokens(amount)](contracts/amo/Ramos.sol#L575)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L566-L576", + "id": "67e99bfded023e26233003458844419ba59173900b8f69b73dd5b1196eedee80", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13900, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + }, + { + "type": "node", + "name": "amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))", + "source_mapping": { + "start": 14331, + "length": 70, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 343 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13900, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minQuoteTokenAmountOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,treasuryPriceIndex(),quoteToken)", + "source_mapping": { + "start": 14451, + "length": 266, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 346, + 347, + 348, + 349 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13900, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeTransfer(feeCollector,feeAmt)", + "source_mapping": { + "start": 14910, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 354 + ], + "starting_column": 13, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13900, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RebalanceDownExit(bptAmountIn,quoteTokenAmountOut,feeAmt)", + "source_mapping": { + "start": 15049, + "length": 64, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 360 + ], + "starting_column": 9, + "ending_column": 73 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownExit", + "source_mapping": { + "start": 13900, + "length": 1330, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleTeamPaymentsFactory.withdrawToken(IERC20,uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#58-62):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(_token,msg.sender,_amount) (contracts/admin/TempleTeamPaymentsFactory.sol#60)\n\tEvent emitted after the call(s):\n\t- TokenRecovered(address(_token),_amount) (contracts/admin/TempleTeamPaymentsFactory.sol#61)\n", - "markdown": "Reentrancy in [TempleTeamPaymentsFactory.withdrawToken(IERC20,uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L58-L62):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(_token,msg.sender,_amount)](contracts/admin/TempleTeamPaymentsFactory.sol#L60)\n\tEvent emitted after the call(s):\n\t- [TokenRecovered(address(_token),_amount)](contracts/admin/TempleTeamPaymentsFactory.sol#L61)\n", - "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L58-L62", - "id": "953d8875749802563ce4b05772559dd5c6f58bf7e3ad4f1c24b9968cf0977dca", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawToken", - "source_mapping": { - "start": 1910, - "length": 248, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [59, 60, 61, 62, 63], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsV2", - "source_mapping": { - "start": 346, - "length": 2589, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in Ramos.rebalanceDownExit(uint256,uint256) (contracts/amo/Ramos.sol#334-364):\n\tExternal calls:\n\t- amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper)) (contracts/amo/Ramos.sol#343)\n\t- quoteTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minQuoteTokenAmountOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,treasuryPriceIndex(),quoteToken) (contracts/amo/Ramos.sol#346-349)\n\t- quoteToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#354)\n\tEvent emitted after the call(s):\n\t- RebalanceDownExit(bptAmountIn,quoteTokenAmountOut,feeAmt) (contracts/amo/Ramos.sol#360)\n", + "markdown": "Reentrancy in [Ramos.rebalanceDownExit(uint256,uint256)](contracts/amo/Ramos.sol#L334-L364):\n\tExternal calls:\n\t- [amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))](contracts/amo/Ramos.sol#L343)\n\t- [quoteTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minQuoteTokenAmountOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,treasuryPriceIndex(),quoteToken)](contracts/amo/Ramos.sol#L346-L349)\n\t- [quoteToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L354)\n\tEvent emitted after the call(s):\n\t- [RebalanceDownExit(bptAmountIn,quoteTokenAmountOut,feeAmt)](contracts/amo/Ramos.sol#L360)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L334-L364", + "id": "6083aa0bd6d99d380fd5f140d51f148bea51f9d21cc99bae41a0172c0c80592f", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 18072, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + }, + { + "type": "node", + "name": "tokenVault.borrowProtocolToken(protocolTokenAmountIn,address(this))", + "source_mapping": { + "start": 18436, + "length": 68, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 429 + ], + "starting_column": 9, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 18072, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolToken.safeTransfer(feeCollector,feeAmt)", + "source_mapping": { + "start": 18710, + "length": 48, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 434 + ], + "starting_column": 13, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 18072, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolToken.safeTransfer(address(_poolHelper),joinAmountIn)", + "source_mapping": { + "start": 18942, + "length": 62, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 440 + ], + "starting_column": 9, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 18072, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,protocolTokenBalancerPoolIndex,protocolToken)", + "source_mapping": { + "start": 19057, + "length": 264, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 443, + 444, + 445, + 446, + 447 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 18072, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RebalanceDownJoin(protocolTokenAmountIn,bptTokensStaked,feeAmt)", + "source_mapping": { + "start": 19331, + "length": 70, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 448 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceDownJoin", + "source_mapping": { + "start": 18072, + "length": 1545, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceDownJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "withdrawToken(IERC20,uint256)" - } - }, - { - "type": "node", - "name": "SafeERC20.safeTransfer(_token,msg.sender,_amount)", - "source_mapping": { - "start": 2045, - "length": 51, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [61], - "starting_column": 9, - "ending_column": 60 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawToken", - "source_mapping": { - "start": 1910, - "length": 248, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [59, 60, 61, 62, 63], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsV2", - "source_mapping": { - "start": 346, - "length": 2589, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawToken(IERC20,uint256)" + ], + "description": "Reentrancy in Ramos.rebalanceDownJoin(uint256,uint256) (contracts/amo/Ramos.sol#421-455):\n\tExternal calls:\n\t- tokenVault.borrowProtocolToken(protocolTokenAmountIn,address(this)) (contracts/amo/Ramos.sol#429)\n\t- protocolToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#434)\n\t- protocolToken.safeTransfer(address(_poolHelper),joinAmountIn) (contracts/amo/Ramos.sol#440)\n\t- bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,protocolTokenBalancerPoolIndex,protocolToken) (contracts/amo/Ramos.sol#443-447)\n\tEvent emitted after the call(s):\n\t- RebalanceDownJoin(protocolTokenAmountIn,bptTokensStaked,feeAmt) (contracts/amo/Ramos.sol#448)\n", + "markdown": "Reentrancy in [Ramos.rebalanceDownJoin(uint256,uint256)](contracts/amo/Ramos.sol#L421-L455):\n\tExternal calls:\n\t- [tokenVault.borrowProtocolToken(protocolTokenAmountIn,address(this))](contracts/amo/Ramos.sol#L429)\n\t- [protocolToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L434)\n\t- [protocolToken.safeTransfer(address(_poolHelper),joinAmountIn)](contracts/amo/Ramos.sol#L440)\n\t- [bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,protocolTokenBalancerPoolIndex,protocolToken)](contracts/amo/Ramos.sol#L443-L447)\n\tEvent emitted after the call(s):\n\t- [RebalanceDownJoin(protocolTokenAmountIn,bptTokensStaked,feeAmt)](contracts/amo/Ramos.sol#L448)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L421-L455", + "id": "4ad07f927825c05b798c66409225ee0120c0e24658c057fada6ad9f73180240c", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11847, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + }, + { + "type": "node", + "name": "amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))", + "source_mapping": { + "start": 12270, + "length": 70, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 299 + ], + "starting_column": 9, + "ending_column": 79 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11847, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minProtocolTokenOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,protocolTokenBalancerPoolIndex,treasuryPriceIndex(),protocolToken)", + "source_mapping": { + "start": 12397, + "length": 279, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11847, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "protocolToken.safeTransfer(feeCollector,feeAmt)", + "source_mapping": { + "start": 12875, + "length": 48, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 311 + ], + "starting_column": 13, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11847, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RebalanceUpExit(bptAmountIn,protocolTokenAmountOut,feeAmt)", + "source_mapping": { + "start": 13091, + "length": 65, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 318 + ], + "starting_column": 9, + "ending_column": 74 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpExit", + "source_mapping": { + "start": 11847, + "length": 1435, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpExit(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "external_calls" } - }, - { - "type": "node", - "name": "TokenRecovered(address(_token),_amount)", - "source_mapping": { - "start": 2106, - "length": 45, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [62], - "starting_column": 9, - "ending_column": 54 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawToken", - "source_mapping": { - "start": 1910, - "length": 248, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [59, 60, 61, 62, 63], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPaymentsV2", - "source_mapping": { - "start": 346, - "length": 2589, - "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", - "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", - "is_dependency": false, - "lines": [ - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawToken(IERC20,uint256)" + ], + "description": "Reentrancy in Ramos.rebalanceUpExit(uint256,uint256) (contracts/amo/Ramos.sol#290-322):\n\tExternal calls:\n\t- amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper)) (contracts/amo/Ramos.sol#299)\n\t- protocolTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minProtocolTokenOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,protocolTokenBalancerPoolIndex,treasuryPriceIndex(),protocolToken) (contracts/amo/Ramos.sol#302-306)\n\t- protocolToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#311)\n\tEvent emitted after the call(s):\n\t- RebalanceUpExit(bptAmountIn,protocolTokenAmountOut,feeAmt) (contracts/amo/Ramos.sol#318)\n", + "markdown": "Reentrancy in [Ramos.rebalanceUpExit(uint256,uint256)](contracts/amo/Ramos.sol#L290-L322):\n\tExternal calls:\n\t- [amoStaking.withdrawAndUnwrap(bptAmountIn,false,address(_poolHelper))](contracts/amo/Ramos.sol#L299)\n\t- [protocolTokenAmountOut = _poolHelper.exitPool(bptAmountIn,minProtocolTokenOut,rebalancePercentageBoundLow,rebalancePercentageBoundUp,postRebalanceDelta,protocolTokenBalancerPoolIndex,treasuryPriceIndex(),protocolToken)](contracts/amo/Ramos.sol#L302-L306)\n\t- [protocolToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L311)\n\tEvent emitted after the call(s):\n\t- [RebalanceUpExit(bptAmountIn,protocolTokenAmountOut,feeAmt)](contracts/amo/Ramos.sol#L318)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L290-L322", + "id": "d1e3e7511c959f3f2562cee5d162c6238b1fb8ed8584ca23b92437d2651d74cd", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15897, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + }, + { + "type": "node", + "name": "tokenVault.borrowQuoteToken(quoteTokenAmountIn,address(this))", + "source_mapping": { + "start": 16247, + "length": 62, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 384 + ], + "starting_column": 9, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15897, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeTransfer(feeCollector,feeAmt)", + "source_mapping": { + "start": 16502, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 389 + ], + "starting_column": 13, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15897, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "quoteToken.safeTransfer(address(_poolHelper),joinAmountIn)", + "source_mapping": { + "start": 16743, + "length": 59, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 395 + ], + "starting_column": 9, + "ending_column": 68 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15897, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,quoteToken)", + "source_mapping": { + "start": 16852, + "length": 250, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 398, + 399, + 400, + 401 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15897, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RebalanceUpJoin(quoteTokenAmountIn,bptTokensStaked,feeAmt)", + "source_mapping": { + "start": 17112, + "length": 65, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 402 + ], + "starting_column": 9, + "ending_column": 74 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "rebalanceUpJoin", + "source_mapping": { + "start": 15897, + "length": 1496, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "rebalanceUpJoin(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - }, - "additional_fields": { "underlying_type": "event" } - } - ], - "description": "Reentrancy in TempleTeamPaymentsV2.withdrawToken(IERC20,uint256) (contracts/admin/TempleTeamPaymentsV2.sol#59-63):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(_token,msg.sender,_amount) (contracts/admin/TempleTeamPaymentsV2.sol#61)\n\tEvent emitted after the call(s):\n\t- TokenRecovered(address(_token),_amount) (contracts/admin/TempleTeamPaymentsV2.sol#62)\n", - "markdown": "Reentrancy in [TempleTeamPaymentsV2.withdrawToken(IERC20,uint256)](contracts/admin/TempleTeamPaymentsV2.sol#L59-L63):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(_token,msg.sender,_amount)](contracts/admin/TempleTeamPaymentsV2.sol#L61)\n\tEvent emitted after the call(s):\n\t- [TokenRecovered(address(_token),_amount)](contracts/admin/TempleTeamPaymentsV2.sol#L62)\n", - "first_markdown_element": "contracts/admin/TempleTeamPaymentsV2.sol#L59-L63", - "id": "1448ab1692e2240869b3f86449f76a8cb3919b98c18052b582afb147fffce7f0", - "check": "reentrancy-events", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in Ramos.rebalanceUpJoin(uint256,uint256) (contracts/amo/Ramos.sol#376-409):\n\tExternal calls:\n\t- tokenVault.borrowQuoteToken(quoteTokenAmountIn,address(this)) (contracts/amo/Ramos.sol#384)\n\t- quoteToken.safeTransfer(feeCollector,feeAmt) (contracts/amo/Ramos.sol#389)\n\t- quoteToken.safeTransfer(address(_poolHelper),joinAmountIn) (contracts/amo/Ramos.sol#395)\n\t- bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,quoteToken) (contracts/amo/Ramos.sol#398-401)\n\tEvent emitted after the call(s):\n\t- RebalanceUpJoin(quoteTokenAmountIn,bptTokensStaked,feeAmt) (contracts/amo/Ramos.sol#402)\n", + "markdown": "Reentrancy in [Ramos.rebalanceUpJoin(uint256,uint256)](contracts/amo/Ramos.sol#L376-L409):\n\tExternal calls:\n\t- [tokenVault.borrowQuoteToken(quoteTokenAmountIn,address(this))](contracts/amo/Ramos.sol#L384)\n\t- [quoteToken.safeTransfer(feeCollector,feeAmt)](contracts/amo/Ramos.sol#L389)\n\t- [quoteToken.safeTransfer(address(_poolHelper),joinAmountIn)](contracts/amo/Ramos.sol#L395)\n\t- [bptTokensStaked = _poolHelper.joinPool(joinAmountIn,minBptOut,rebalancePercentageBoundUp,rebalancePercentageBoundLow,treasuryPriceIndex(),postRebalanceDelta,1 - protocolTokenBalancerPoolIndex,quoteToken)](contracts/amo/Ramos.sol#L398-L401)\n\tEvent emitted after the call(s):\n\t- [RebalanceUpJoin(quoteTokenAmountIn,bptTokensStaked,feeAmt)](contracts/amo/Ramos.sol#L402)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L376-L409", + "id": "0f3416b0e7e6449ff33b7394396c4bf724c482fcbb9d305e03fcb53aaee726ac", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "recoverToGnosis", + "source_mapping": { + "start": 5325, + "length": 237, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 142, + 143, + 144, + 145 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToGnosis(address,uint256)" + } + }, + { + "type": "node", + "name": "IERC20(token).safeTransfer(gnosisSafeWallet,amount)", + "source_mapping": { + "start": 5419, + "length": 52, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToGnosis", + "source_mapping": { + "start": 5325, + "length": 237, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 142, + 143, + 144, + 145 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToGnosis(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "CommonEventsAndErrors.TokenRecovered(gnosisSafeWallet,token,amount)", + "source_mapping": { + "start": 5481, + "length": 74, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 144 + ], + "starting_column": 9, + "ending_column": 83 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToGnosis", + "source_mapping": { + "start": 5325, + "length": 237, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 142, + 143, + 144, + 145 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "GnosisStrategy", + "source_mapping": { + "start": 584, + "length": 6684, + "filename_relative": "contracts/v2/strategies/GnosisStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/GnosisStrategy.sol", + "filename_short": "contracts/v2/strategies/GnosisStrategy.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToGnosis(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" - } - }, - { - "type": "node", - "name": "timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0", - "source_mapping": { - "start": 3460, - "length": 51, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [84], - "starting_column": 13, - "ending_column": 64 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_update", - "source_mapping": { - "start": 3107, - "length": 847, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_update(uint256,uint256,uint112,uint112)" + ], + "description": "Reentrancy in GnosisStrategy.recoverToGnosis(address,uint256) (contracts/v2/strategies/GnosisStrategy.sol#142-145):\n\tExternal calls:\n\t- IERC20(token).safeTransfer(gnosisSafeWallet,amount) (contracts/v2/strategies/GnosisStrategy.sol#143)\n\tEvent emitted after the call(s):\n\t- CommonEventsAndErrors.TokenRecovered(gnosisSafeWallet,token,amount) (contracts/v2/strategies/GnosisStrategy.sol#144)\n", + "markdown": "Reentrancy in [GnosisStrategy.recoverToGnosis(address,uint256)](contracts/v2/strategies/GnosisStrategy.sol#L142-L145):\n\tExternal calls:\n\t- [IERC20(token).safeTransfer(gnosisSafeWallet,amount)](contracts/v2/strategies/GnosisStrategy.sol#L143)\n\tEvent emitted after the call(s):\n\t- [CommonEventsAndErrors.TokenRecovered(gnosisSafeWallet,token,amount)](contracts/v2/strategies/GnosisStrategy.sol#L144)\n", + "first_markdown_element": "contracts/v2/strategies/GnosisStrategy.sol#L142-L145", + "id": "d9bd0a33246588c83983d63975a9ce55470568eeff09e037f055b8e7122562e2", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 2334, + "length": 206, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + }, + { + "type": "node", + "name": "IERC20(token).safeTransfer(to,amount)", + "source_mapping": { + "start": 2446, + "length": 38, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 68 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 2334, + "length": 206, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RecoveredToken(token,to,amount)", + "source_mapping": { + "start": 2495, + "length": 38, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 70 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 2334, + "length": 206, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 67, + 68, + 69, + 70, + 71 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "AuraStaking", + "source_mapping": { + "start": 604, + "length": 5204, + "filename_relative": "contracts/amo/AuraStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/AuraStaking.sol", + "filename_short": "contracts/amo/AuraStaking.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0 (contracts/amm/TempleUniswapV2Pair.sol#84)\n", - "markdown": "[TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0](contracts/amm/TempleUniswapV2Pair.sol#L84)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L80-L93", - "id": "3e4c1fb2f0df938570805f2a5513be58a1af7dd63232a6822178ed2775dc9957", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_initBaseCache", - "source_mapping": { - "start": 26049, - "length": 748, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, - 610, 611, 612, 613, 614, 615, 616, 617 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleDebtToken", - "source_mapping": { - "start": 2202, - "length": 30641, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, - 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, - 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, - 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, - 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, - 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in AuraStaking.recoverToken(address,address,uint256) (contracts/amo/AuraStaking.sol#67-71):\n\tExternal calls:\n\t- IERC20(token).safeTransfer(to,amount) (contracts/amo/AuraStaking.sol#68)\n\tEvent emitted after the call(s):\n\t- RecoveredToken(token,to,amount) (contracts/amo/AuraStaking.sol#70)\n", + "markdown": "Reentrancy in [AuraStaking.recoverToken(address,address,uint256)](contracts/amo/AuraStaking.sol#L67-L71):\n\tExternal calls:\n\t- [IERC20(token).safeTransfer(to,amount)](contracts/amo/AuraStaking.sol#L68)\n\tEvent emitted after the call(s):\n\t- [RecoveredToken(token,to,amount)](contracts/amo/AuraStaking.sol#L70)\n", + "first_markdown_element": "contracts/amo/AuraStaking.sol#L67-L71", + "id": "721f7e4ea8f943fb92b4b72846f0042313e2b5e55c2edcd24d2ab5f7aab87665", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 11012, + "length": 197, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 274, + 275, + 276, + 277, + 278 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + }, + { + "type": "node", + "name": "IERC20(token).safeTransfer(to,amount)", + "source_mapping": { + "start": 11115, + "length": 38, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 275 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 11012, + "length": 197, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 274, + 275, + 276, + 277, + 278 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RecoveredToken(token,to,amount)", + "source_mapping": { + "start": 11164, + "length": 38, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 277 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 11012, + "length": 197, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 274, + 275, + 276, + 277, + 278 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_initBaseCache(TempleDebtToken.BaseCache)" - } - }, - { - "type": "node", - "name": "_timeElapsed > 0", - "source_mapping": { - "start": 26435, - "length": 16, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [607], - "starting_column": 13, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_initBaseCache", - "source_mapping": { - "start": 26049, - "length": 748, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, - 610, 611, 612, 613, 614, 615, 616, 617 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleDebtToken", - "source_mapping": { - "start": 2202, - "length": 30641, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, - 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, - 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, - 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, - 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, - 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, - 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, - 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_initBaseCache(TempleDebtToken.BaseCache)" + ], + "description": "Reentrancy in Ramos.recoverToken(address,address,uint256) (contracts/amo/Ramos.sol#274-278):\n\tExternal calls:\n\t- IERC20(token).safeTransfer(to,amount) (contracts/amo/Ramos.sol#275)\n\tEvent emitted after the call(s):\n\t- RecoveredToken(token,to,amount) (contracts/amo/Ramos.sol#277)\n", + "markdown": "Reentrancy in [Ramos.recoverToken(address,address,uint256)](contracts/amo/Ramos.sol#L274-L278):\n\tExternal calls:\n\t- [IERC20(token).safeTransfer(to,amount)](contracts/amo/Ramos.sol#L275)\n\tEvent emitted after the call(s):\n\t- [RecoveredToken(token,to,amount)](contracts/amo/Ramos.sol#L277)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L274-L278", + "id": "a57f15edd93bacbeb09bc6f5cb3cd1b4540b96d74dac7b8b25c22b16adc633ed", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + }, + { + "type": "node", + "name": "circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)", + "source_mapping": { + "start": 7012, + "length": 118, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 173, + 174, + 175, + 176, + 177 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "CollateralRemoved(msg.sender,recipient,amount)", + "source_mapping": { + "start": 7320, + "length": 53, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 182 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeCollateral", + "source_mapping": { + "start": 6498, + "length": 1031, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeCollateral(uint128,address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleDebtToken._initBaseCache(TempleDebtToken.BaseCache) (contracts/v2/TempleDebtToken.sol#597-617) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _timeElapsed > 0 (contracts/v2/TempleDebtToken.sol#607)\n", - "markdown": "[TempleDebtToken._initBaseCache(TempleDebtToken.BaseCache)](contracts/v2/TempleDebtToken.sol#L597-L617) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_timeElapsed > 0](contracts/v2/TempleDebtToken.sol#L607)\n", - "first_markdown_element": "contracts/v2/TempleDebtToken.sol#L597-L617", - "id": "31468fb88b544bfa40953f9c670145ae2d6cc30a857f141027542b78efe5314e", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_initDebtorCache", - "source_mapping": { - "start": 28507, - "length": 2281, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, - 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, - 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, - 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, - 724, 725, 726, 727 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleDebtToken", - "source_mapping": { - "start": 2202, - "length": 30641, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, - 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, - 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, - 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, - 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, - 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in TempleLineOfCredit.removeCollateral(uint128,address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#166-190):\n\tExternal calls:\n\t- circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#173-177)\n\tEvent emitted after the call(s):\n\t- CollateralRemoved(msg.sender,recipient,amount) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#182)\n", + "markdown": "Reentrancy in [TempleLineOfCredit.removeCollateral(uint128,address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190):\n\tExternal calls:\n\t- [circuitBreakerProxy.preCheck(address(templeToken),msg.sender,amount)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L173-L177)\n\tEvent emitted after the call(s):\n\t- [CollateralRemoved(msg.sender,recipient,amount)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L182)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L166-L190", + "id": "995ebae8f6668f6a1d468a923e261df6e2cd441ac86401c473cc53982585815d", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22535, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + }, + { + "type": "node", + "name": "amoStaking.withdrawAndUnwrap(bptIn,false,address(this))", + "source_mapping": { + "start": 23216, + "length": 57, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 541 + ], + "starting_column": 9, + "ending_column": 66 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22535, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "balancerVault.exitPool(balancerPoolId,address(this),address(this),request)", + "source_mapping": { + "start": 23283, + "length": 77, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 542 + ], + "starting_column": 9, + "ending_column": 86 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22535, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_tokenVault.repayProtocolToken(protocolTokenAmount)", + "source_mapping": { + "start": 23691, + "length": 51, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 551 + ], + "starting_column": 13, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22535, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "_tokenVault.repayQuoteToken(quoteTokenAmount)", + "source_mapping": { + "start": 23803, + "length": 45, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 555 + ], + "starting_column": 13, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22535, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "LiquidityRemoved(quoteTokenAmount,protocolTokenAmount,bptIn)", + "source_mapping": { + "start": 23869, + "length": 67, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 558 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 22535, + "length": 1408, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Ramos", + "source_mapping": { + "start": 1893, + "length": 24333, + "filename_relative": "contracts/amo/Ramos.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amo/Ramos.sol", + "filename_short": "contracts/amo/Ramos.sol", + "is_dependency": false, + "lines": [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_initDebtorCache(TempleDebtToken.BaseCache,ITempleDebtToken.Debtor,TempleDebtToken.DebtorCache,bool)" - } - }, - { - "type": "node", - "name": "_timeElapsed > 0", - "source_mapping": { - "start": 29667, - "length": 16, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [703], - "starting_column": 13, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_initDebtorCache", - "source_mapping": { - "start": 28507, - "length": 2281, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, - 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, - 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, - 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, - 724, 725, 726, 727 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleDebtToken", - "source_mapping": { - "start": 2202, - "length": 30641, - "filename_relative": "contracts/v2/TempleDebtToken.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", - "filename_short": "contracts/v2/TempleDebtToken.sol", - "is_dependency": false, - "lines": [ - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, - 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, - 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, - 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, - 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, - 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, - 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, - 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_initDebtorCache(TempleDebtToken.BaseCache,ITempleDebtToken.Debtor,TempleDebtToken.DebtorCache,bool)" + ], + "description": "Reentrancy in Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256) (contracts/amo/Ramos.sol#522-559):\n\tExternal calls:\n\t- amoStaking.withdrawAndUnwrap(bptIn,false,address(this)) (contracts/amo/Ramos.sol#541)\n\t- balancerVault.exitPool(balancerPoolId,address(this),address(this),request) (contracts/amo/Ramos.sol#542)\n\t- _tokenVault.repayProtocolToken(protocolTokenAmount) (contracts/amo/Ramos.sol#551)\n\t- _tokenVault.repayQuoteToken(quoteTokenAmount) (contracts/amo/Ramos.sol#555)\n\tEvent emitted after the call(s):\n\t- LiquidityRemoved(quoteTokenAmount,protocolTokenAmount,bptIn) (contracts/amo/Ramos.sol#558)\n", + "markdown": "Reentrancy in [Ramos.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)](contracts/amo/Ramos.sol#L522-L559):\n\tExternal calls:\n\t- [amoStaking.withdrawAndUnwrap(bptIn,false,address(this))](contracts/amo/Ramos.sol#L541)\n\t- [balancerVault.exitPool(balancerPoolId,address(this),address(this),request)](contracts/amo/Ramos.sol#L542)\n\t- [_tokenVault.repayProtocolToken(protocolTokenAmount)](contracts/amo/Ramos.sol#L551)\n\t- [_tokenVault.repayQuoteToken(quoteTokenAmount)](contracts/amo/Ramos.sol#L555)\n\tEvent emitted after the call(s):\n\t- [LiquidityRemoved(quoteTokenAmount,protocolTokenAmount,bptIn)](contracts/amo/Ramos.sol#L558)\n", + "first_markdown_element": "contracts/amo/Ramos.sol#L522-L559", + "id": "bed2c1413f14f1f0f387a42599c99dbade4f123d221d53142cc235119defc33d", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 8140, + "length": 365, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 209, + 210, + 211, + 212, + 213, + 214, + 215 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + }, + { + "type": "node", + "name": "(quoteTokenAmount,protocolTokenAmount) = ramos.removeLiquidity(_requestData,_bptAmount)", + "source_mapping": { + "start": 8277, + "length": 140, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 210, + 211, + 212, + 213 + ], + "starting_column": 9, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 8140, + "length": 365, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 209, + 210, + 211, + 212, + 213, + 214, + 215 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RemoveLiquidity(quoteTokenAmount,protocolTokenAmount,_bptAmount)", + "source_mapping": { + "start": 8427, + "length": 71, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 214 + ], + "starting_column": 9, + "ending_column": 80 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "removeLiquidity", + "source_mapping": { + "start": 8140, + "length": 365, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 209, + 210, + 211, + 212, + 213, + 214, + 215 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "RamosStrategy", + "source_mapping": { + "start": 1131, + "length": 9320, + "filename_relative": "contracts/v2/strategies/RamosStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/RamosStrategy.sol", + "filename_short": "contracts/v2/strategies/RamosStrategy.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleDebtToken._initDebtorCache(TempleDebtToken.BaseCache,ITempleDebtToken.Debtor,TempleDebtToken.DebtorCache,bool) (contracts/v2/TempleDebtToken.sol#672-727) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _timeElapsed > 0 (contracts/v2/TempleDebtToken.sol#703)\n", - "markdown": "[TempleDebtToken._initDebtorCache(TempleDebtToken.BaseCache,ITempleDebtToken.Debtor,TempleDebtToken.DebtorCache,bool)](contracts/v2/TempleDebtToken.sol#L672-L727) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_timeElapsed > 0](contracts/v2/TempleDebtToken.sol#L703)\n", - "first_markdown_element": "contracts/v2/TempleDebtToken.sol#L672-L727", - "id": "a6d589cd4caf5ac6f228dd6218ef29c77e92ed66db618140855c2644b3b2cb10", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "treasuryPriceIndex", - "source_mapping": { - "start": 2676, - "length": 309, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [70, 71, 72, 73, 74], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryPriceIndexOracle", - "source_mapping": { - "start": 672, - "length": 3918, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in RamosStrategy.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256) (contracts/v2/strategies/RamosStrategy.sol#209-215):\n\tExternal calls:\n\t- (quoteTokenAmount,protocolTokenAmount) = ramos.removeLiquidity(_requestData,_bptAmount) (contracts/v2/strategies/RamosStrategy.sol#210-213)\n\tEvent emitted after the call(s):\n\t- RemoveLiquidity(quoteTokenAmount,protocolTokenAmount,_bptAmount) (contracts/v2/strategies/RamosStrategy.sol#214)\n", + "markdown": "Reentrancy in [RamosStrategy.removeLiquidity(IBalancerVault.ExitPoolRequest,uint256)](contracts/v2/strategies/RamosStrategy.sol#L209-L215):\n\tExternal calls:\n\t- [(quoteTokenAmount,protocolTokenAmount) = ramos.removeLiquidity(_requestData,_bptAmount)](contracts/v2/strategies/RamosStrategy.sol#L210-L213)\n\tEvent emitted after the call(s):\n\t- [RemoveLiquidity(quoteTokenAmount,protocolTokenAmount,_bptAmount)](contracts/v2/strategies/RamosStrategy.sol#L214)\n", + "first_markdown_element": "contracts/v2/strategies/RamosStrategy.sol#L209-L215", + "id": "7c31093def50156c36e632afd1bdd7b3c7f967dee0aff539f837b6a8448615ae", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 875, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + }, + { + "type": "node", + "name": "daiToken.safeApprove(previousTrv,0)", + "source_mapping": { + "start": 16002, + "length": 36, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 394 + ], + "starting_column": 13, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 875, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "daiToken.safeApprove(_trv,0)", + "source_mapping": { + "start": 16249, + "length": 29, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 402 + ], + "starting_column": 13, + "ending_column": 42 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 875, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "daiToken.safeIncreaseAllowance(_trv,type()(uint256).max)", + "source_mapping": { + "start": 16292, + "length": 55, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 403 + ], + "starting_column": 13, + "ending_column": 68 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 875, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "TlcStrategySet(newTlcStrategy,_trv)", + "source_mapping": { + "start": 16368, + "length": 41, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 406 + ], + "starting_column": 9, + "ending_column": 50 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTlcStrategy", + "source_mapping": { + "start": 15688, + "length": 875, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTlcStrategy(address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "treasuryPriceIndex()" - } - }, - { - "type": "node", - "name": "(block.timestamp < (tpiData.lastUpdatedAt + tpiData.cooldownSecs))", - "source_mapping": { - "start": 2754, - "length": 204, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [71, 72, 73], - "starting_column": 9, - "ending_column": 33 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "treasuryPriceIndex", - "source_mapping": { - "start": 2676, - "length": 309, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [70, 71, 72, 73, 74], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryPriceIndexOracle", - "source_mapping": { - "start": 672, - "length": 3918, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "treasuryPriceIndex()" + ], + "description": "Reentrancy in TempleLineOfCredit.setTlcStrategy(address) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#386-410):\n\tExternal calls:\n\t- daiToken.safeApprove(previousTrv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#394)\n\t- daiToken.safeApprove(_trv,0) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#402)\n\t- daiToken.safeIncreaseAllowance(_trv,type()(uint256).max) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#403)\n\tEvent emitted after the call(s):\n\t- TlcStrategySet(newTlcStrategy,_trv) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#406)\n", + "markdown": "Reentrancy in [TempleLineOfCredit.setTlcStrategy(address)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410):\n\tExternal calls:\n\t- [daiToken.safeApprove(previousTrv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L394)\n\t- [daiToken.safeApprove(_trv,0)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L402)\n\t- [daiToken.safeIncreaseAllowance(_trv,type()(uint256).max)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L403)\n\tEvent emitted after the call(s):\n\t- [TlcStrategySet(newTlcStrategy,_trv)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L406)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L386-L410", + "id": "324c860350f8b013fe53e7e16c80f3c65372dc79913460521e82a2cd87c23a45", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + }, + { + "type": "node", + "name": "_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)", + "source_mapping": { + "start": 12499, + "length": 64, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 296 + ], + "starting_column": 13, + "ending_column": 77 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "StrategyRemoved(strategy)", + "source_mapping": { + "start": 13162, + "length": 30, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 312 + ], + "starting_column": 9, + "ending_column": 39 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "StrategyShutdownCreditAndDebt({strategy:strategy,token:address(_token),outstandingCredit:credits[_token],outstandingDebt:_outstandingDebt})", + "source_mapping": { + "start": 12577, + "length": 231, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 297, + 298, + 299, + 300, + 301, + 302 + ], + "starting_column": 13, + "ending_column": 15 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "shutdown", + "source_mapping": { + "start": 11822, + "length": 1632, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "shutdown(address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TreasuryPriceIndexOracle.treasuryPriceIndex() (contracts/v2/TreasuryPriceIndexOracle.sol#70-74) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- (block.timestamp < (tpiData.lastUpdatedAt + tpiData.cooldownSecs)) (contracts/v2/TreasuryPriceIndexOracle.sol#71-73)\n", - "markdown": "[TreasuryPriceIndexOracle.treasuryPriceIndex()](contracts/v2/TreasuryPriceIndexOracle.sol#L70-L74) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [(block.timestamp < (tpiData.lastUpdatedAt + tpiData.cooldownSecs))](contracts/v2/TreasuryPriceIndexOracle.sol#L71-L73)\n", - "first_markdown_element": "contracts/v2/TreasuryPriceIndexOracle.sol#L70-L74", - "id": "649566e5b9f48d4a53dd158c2137fe6a456902d4dbc71fadce5826d8bdeea4cf", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "setTreasuryPriceIndex", - "source_mapping": { - "start": 3772, - "length": 815, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryPriceIndexOracle", - "source_mapping": { - "start": 672, - "length": 3918, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in TreasuryReservesVault.shutdown(address) (contracts/v2/TreasuryReservesVault.sol#283-319):\n\tExternal calls:\n\t- _outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy) (contracts/v2/TreasuryReservesVault.sol#296)\n\tEvent emitted after the call(s):\n\t- StrategyRemoved(strategy) (contracts/v2/TreasuryReservesVault.sol#312)\n\t- StrategyShutdownCreditAndDebt({strategy:strategy,token:address(_token),outstandingCredit:credits[_token],outstandingDebt:_outstandingDebt}) (contracts/v2/TreasuryReservesVault.sol#297-302)\n", + "markdown": "Reentrancy in [TreasuryReservesVault.shutdown(address)](contracts/v2/TreasuryReservesVault.sol#L283-L319):\n\tExternal calls:\n\t- [_outstandingDebt = borrowTokens[_token].dToken.burnAll(strategy)](contracts/v2/TreasuryReservesVault.sol#L296)\n\tEvent emitted after the call(s):\n\t- [StrategyRemoved(strategy)](contracts/v2/TreasuryReservesVault.sol#L312)\n\t- [StrategyShutdownCreditAndDebt({strategy:strategy,token:address(_token),outstandingCredit:credits[_token],outstandingDebt:_outstandingDebt})](contracts/v2/TreasuryReservesVault.sol#L297-L302)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L283-L319", + "id": "3770a3cd34d6db65975f14acb9170e3663edac9809964808500e613a8be2344e", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "trvWithdraw", + "source_mapping": { + "start": 10560, + "length": 947, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "trvWithdraw(uint256)" + } + }, + { + "type": "node", + "name": "(daiAvailable,chi,sharesAvailable) = _checkpointDaiBalance()", + "source_mapping": { + "start": 11010, + "length": 86, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 264 + ], + "starting_column": 9, + "ending_column": 95 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "trvWithdraw", + "source_mapping": { + "start": 10560, + "length": 947, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "trvWithdraw(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5566, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAmount,requestedAmount)", + "source_mapping": { + "start": 11365, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 273 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "trvWithdraw", + "source_mapping": { + "start": 10560, + "length": 947, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "trvWithdraw(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11597, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11629, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11677, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAmount,requestedAmount)", + "source_mapping": { + "start": 11365, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 273 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "trvWithdraw", + "source_mapping": { + "start": 10560, + "length": 947, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "trvWithdraw(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "setTreasuryPriceIndex(uint96)" - } - }, - { - "type": "node", - "name": "_delta > maxTreasuryPriceIndexDelta", - "source_mapping": { - "start": 4199, - "length": 35, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [105], - "starting_column": 17, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTreasuryPriceIndex", - "source_mapping": { - "start": 3772, - "length": 815, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryPriceIndexOracle", - "source_mapping": { - "start": 672, - "length": 3918, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTreasuryPriceIndex(uint96)" + ], + "description": "Reentrancy in DsrBaseStrategy.trvWithdraw(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#257-276):\n\tExternal calls:\n\t- (daiAvailable,chi,sharesAvailable) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#264)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t- _dsrWithdrawal(sharesAmount,requestedAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#273)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\t\t- _dsrWithdrawal(sharesAmount,requestedAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#273)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.trvWithdraw(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L257-L276):\n\tExternal calls:\n\t- [(daiAvailable,chi,sharesAvailable) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L264)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t- [_dsrWithdrawal(sharesAmount,requestedAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L273)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\t\t- [_dsrWithdrawal(sharesAmount,requestedAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L273)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L257-L276", + "id": "0a4c8e86f10e88f7cdc66960b0dd281291f86c22d1d8b92e68909c1d477f23ac", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawAndRepay", + "source_mapping": { + "start": 8509, + "length": 786, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepay(uint256)" + } + }, + { + "type": "node", + "name": "(daiAvailable,chi) = _checkpointDaiBalance()", + "source_mapping": { + "start": 8690, + "length": 63, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 217 + ], + "starting_column": 9, + "ending_column": 72 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepay", + "source_mapping": { + "start": 8509, + "length": 786, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepay(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5566, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAmount,withdrawalAmount)", + "source_mapping": { + "start": 9025, + "length": 46, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 222 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepay", + "source_mapping": { + "start": 8509, + "length": 786, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepay(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11597, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11629, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11677, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAmount,withdrawalAmount)", + "source_mapping": { + "start": 9025, + "length": 46, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 222 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepay", + "source_mapping": { + "start": 8509, + "length": 786, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepay(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - }, - { - "type": "node", - "name": "(_newTpi > _oldTpi)", - "source_mapping": { - "start": 4105, - "length": 76, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [104], - "starting_column": 13, - "ending_column": 89 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "setTreasuryPriceIndex", - "source_mapping": { - "start": 3772, - "length": 815, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [ - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TreasuryPriceIndexOracle", - "source_mapping": { - "start": 672, - "length": 3918, - "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", - "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "setTreasuryPriceIndex(uint96)" + ], + "description": "Reentrancy in DsrBaseStrategy.withdrawAndRepay(uint256) (contracts/v2/strategies/DsrBaseStrategy.sol#214-227):\n\tExternal calls:\n\t- (daiAvailable,chi) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#217)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t- _dsrWithdrawal(sharesAmount,withdrawalAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#222)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\t\t- _dsrWithdrawal(sharesAmount,withdrawalAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#222)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.withdrawAndRepay(uint256)](contracts/v2/strategies/DsrBaseStrategy.sol#L214-L227):\n\tExternal calls:\n\t- [(daiAvailable,chi) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L217)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t- [_dsrWithdrawal(sharesAmount,withdrawalAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L222)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\t\t- [_dsrWithdrawal(sharesAmount,withdrawalAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L222)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L214-L227", + "id": "38cb9f382307934e51255ca3f7d7f51604f44bc46a20af75d7f155182cf9bb95", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawAndRepayAll", + "source_mapping": { + "start": 9412, + "length": 465, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepayAll()" + } + }, + { + "type": "node", + "name": "(daiAvailable,sharesAvailable) = _checkpointDaiBalance()", + "source_mapping": { + "start": 9499, + "length": 74, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 233 + ], + "starting_column": 9, + "ending_column": 83 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepayAll", + "source_mapping": { + "start": 9412, + "length": 465, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepayAll()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "chi = pot.drip()", + "source_mapping": { + "start": 5566, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", + "source_mapping": { + "start": 9583, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 234 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepayAll", + "source_mapping": { + "start": 9412, + "length": 465, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepayAll()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "pot.exit(sharesAmount)", + "source_mapping": { + "start": 11597, + "length": 22, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 279 + ], + "starting_column": 9, + "ending_column": 31 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "daiJoin.exit(address(this),daiAmount)", + "source_mapping": { + "start": 11629, + "length": 38, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 280 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DaiWithdrawn(daiAmount)", + "source_mapping": { + "start": 11677, + "length": 28, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 281 + ], + "starting_column": 9, + "ending_column": 37 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_dsrWithdrawal", + "source_mapping": { + "start": 11513, + "length": 199, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 278, + 279, + 280, + 281, + 282 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_dsrWithdrawal(uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } + }, + { + "type": "node", + "name": "_dsrWithdrawal(sharesAvailable,daiAvailable)", + "source_mapping": { + "start": 9583, + "length": 45, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 234 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawAndRepayAll", + "source_mapping": { + "start": 9412, + "length": 465, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdrawAndRepayAll()" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TreasuryPriceIndexOracle.setTreasuryPriceIndex(uint96) (contracts/v2/TreasuryPriceIndexOracle.sol#97-116) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _delta > maxTreasuryPriceIndexDelta (contracts/v2/TreasuryPriceIndexOracle.sol#105)\n\t- (_newTpi > _oldTpi) (contracts/v2/TreasuryPriceIndexOracle.sol#104)\n", - "markdown": "[TreasuryPriceIndexOracle.setTreasuryPriceIndex(uint96)](contracts/v2/TreasuryPriceIndexOracle.sol#L97-L116) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_delta > maxTreasuryPriceIndexDelta](contracts/v2/TreasuryPriceIndexOracle.sol#L105)\n\t- [(_newTpi > _oldTpi)](contracts/v2/TreasuryPriceIndexOracle.sol#L104)\n", - "first_markdown_element": "contracts/v2/TreasuryPriceIndexOracle.sol#L97-L116", - "id": "27e472ea358357b1aa713a4753b654ee999cc773f1704e268101424130b80b61", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "preCheck", - "source_mapping": { - "start": 3551, - "length": 1277, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerAllUsersPerPeriod", - "source_mapping": { - "start": 1479, - "length": 6866, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in DsrBaseStrategy.withdrawAndRepayAll() (contracts/v2/strategies/DsrBaseStrategy.sol#232-240):\n\tExternal calls:\n\t- (daiAvailable,sharesAvailable) = _checkpointDaiBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#233)\n\t\t- chi = pot.drip() (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#234)\n\t\t- pot.exit(sharesAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#279)\n\t\t- daiJoin.exit(address(this),daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#280)\n\tEvent emitted after the call(s):\n\t- DaiWithdrawn(daiAmount) (contracts/v2/strategies/DsrBaseStrategy.sol#281)\n\t\t- _dsrWithdrawal(sharesAvailable,daiAvailable) (contracts/v2/strategies/DsrBaseStrategy.sol#234)\n", + "markdown": "Reentrancy in [DsrBaseStrategy.withdrawAndRepayAll()](contracts/v2/strategies/DsrBaseStrategy.sol#L232-L240):\n\tExternal calls:\n\t- [(daiAvailable,sharesAvailable) = _checkpointDaiBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L233)\n\t\t- [chi = pot.drip()](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L234)\n\t\t- [pot.exit(sharesAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L279)\n\t\t- [daiJoin.exit(address(this),daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L280)\n\tEvent emitted after the call(s):\n\t- [DaiWithdrawn(daiAmount)](contracts/v2/strategies/DsrBaseStrategy.sol#L281)\n\t\t- [_dsrWithdrawal(sharesAvailable,daiAvailable)](contracts/v2/strategies/DsrBaseStrategy.sol#L234)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L232-L240", + "id": "4ba8e3c4596e10b0920e312a0648a8fa3ef9456ad23cffc62074dc7f78916f68", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "adhocPayment", + "source_mapping": { + "start": 2841, + "length": 284, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "adhocPayment(address,uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransfer(TEMPLE,_to,_amount)", + "source_mapping": { + "start": 3038, + "length": 44, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 86 + ], + "starting_column": 9, + "ending_column": 53 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "adhocPayment", + "source_mapping": { + "start": 2841, + "length": 284, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "adhocPayment(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Claimed(_to,_amount)", + "source_mapping": { + "start": 3092, + "length": 26, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 87 + ], + "starting_column": 9, + "ending_column": 35 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "adhocPayment", + "source_mapping": { + "start": 2841, + "length": 284, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 83, + 84, + 85, + 86, + 87, + 88 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "adhocPayment(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "preCheck(address,uint256)" - } - }, - { - "type": "node", - "name": "_nextBucketIndex != _currentBucketIndex", - "source_mapping": { - "start": 3971, - "length": 39, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [96], - "starting_column": 13, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "preCheck", - "source_mapping": { - "start": 3551, - "length": 1277, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerAllUsersPerPeriod", - "source_mapping": { - "start": 1479, - "length": 6866, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "preCheck(address,uint256)" + ], + "description": "Reentrancy in TempleTeamPayments.adhocPayment(address,uint256) (contracts/admin/TempleTeamPayments.sol#83-88):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(TEMPLE,_to,_amount) (contracts/admin/TempleTeamPayments.sol#86)\n\tEvent emitted after the call(s):\n\t- Claimed(_to,_amount) (contracts/admin/TempleTeamPayments.sol#87)\n", + "markdown": "Reentrancy in [TempleTeamPayments.adhocPayment(address,uint256)](contracts/admin/TempleTeamPayments.sol#L83-L88):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(TEMPLE,_to,_amount)](contracts/admin/TempleTeamPayments.sol#L86)\n\tEvent emitted after the call(s):\n\t- [Claimed(_to,_amount)](contracts/admin/TempleTeamPayments.sol#L87)\n", + "first_markdown_element": "contracts/admin/TempleTeamPayments.sol#L83-L88", + "id": "081d1dfdebd16cea0856cb988c13c62e2d2d6e5c3fbd25c36620643fb11a0000", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "claim", + "source_mapping": { + "start": 2480, + "length": 355, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "claim()" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransfer(TEMPLE,msg.sender,claimable)", + "source_mapping": { + "start": 2730, + "length": 53, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claim", + "source_mapping": { + "start": 2480, + "length": 355, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "claim()" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Claimed(msg.sender,claimable)", + "source_mapping": { + "start": 2793, + "length": 35, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 80 + ], + "starting_column": 9, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claim", + "source_mapping": { + "start": 2480, + "length": 355, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "claim()" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - }, - { - "type": "node", - "name": "_minBucketResetIndex < _nextBucketIndex", - "source_mapping": { - "start": 4180, - "length": 39, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [100], - "starting_column": 24, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "preCheck", - "source_mapping": { - "start": 3551, - "length": 1277, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerAllUsersPerPeriod", - "source_mapping": { - "start": 1479, - "length": 6866, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "preCheck(address,uint256)" + ], + "description": "Reentrancy in TempleTeamPayments.claim() (contracts/admin/TempleTeamPayments.sol#74-81):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(TEMPLE,msg.sender,claimable) (contracts/admin/TempleTeamPayments.sol#79)\n\tEvent emitted after the call(s):\n\t- Claimed(msg.sender,claimable) (contracts/admin/TempleTeamPayments.sol#80)\n", + "markdown": "Reentrancy in [TempleTeamPayments.claim()](contracts/admin/TempleTeamPayments.sol#L74-L81):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(TEMPLE,msg.sender,claimable)](contracts/admin/TempleTeamPayments.sol#L79)\n\tEvent emitted after the call(s):\n\t- [Claimed(msg.sender,claimable)](contracts/admin/TempleTeamPayments.sol#L80)\n", + "first_markdown_element": "contracts/admin/TempleTeamPayments.sol#L74-L81", + "id": "5122a045d2e21480d0560d2c58820df1a98500cfc6453d3088b53c090e7d16e3", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "claim", + "source_mapping": { + "start": 2481, + "length": 452, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsV2", + "source_mapping": { + "start": 346, + "length": 2589, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "claim(uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransfer(temple,msg.sender,_claimAmount)", + "source_mapping": { + "start": 2822, + "length": 56, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 83 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claim", + "source_mapping": { + "start": 2481, + "length": 452, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsV2", + "source_mapping": { + "start": 346, + "length": 2589, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "claim(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Claimed(msg.sender,_claimAmount)", + "source_mapping": { + "start": 2888, + "length": 38, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 84 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claim", + "source_mapping": { + "start": 2481, + "length": 452, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsV2", + "source_mapping": { + "start": 346, + "length": 2589, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "claim(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleCircuitBreakerAllUsersPerPeriod.preCheck(address,uint256) (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#89-117) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _nextBucketIndex != _currentBucketIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#96)\n\t- _minBucketResetIndex < _nextBucketIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#100)\n", - "markdown": "[TempleCircuitBreakerAllUsersPerPeriod.preCheck(address,uint256)](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L89-L117) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_nextBucketIndex != _currentBucketIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L96)\n\t- [_minBucketResetIndex < _nextBucketIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L100)\n", - "first_markdown_element": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L89-L117", - "id": "080fc01692d6234533b35c64ebb6efb9506e8defa98bc2809f7c873c4c084550", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_getMinBucketResetIndex", - "source_mapping": { - "start": 5647, - "length": 406, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143, 144, 145], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerAllUsersPerPeriod", - "source_mapping": { - "start": 1479, - "length": 6866, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in TempleTeamPaymentsV2.claim(uint256) (contracts/admin/TempleTeamPaymentsV2.sol#74-85):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(temple,msg.sender,_claimAmount) (contracts/admin/TempleTeamPaymentsV2.sol#83)\n\tEvent emitted after the call(s):\n\t- Claimed(msg.sender,_claimAmount) (contracts/admin/TempleTeamPaymentsV2.sol#84)\n", + "markdown": "Reentrancy in [TempleTeamPaymentsV2.claim(uint256)](contracts/admin/TempleTeamPaymentsV2.sol#L74-L85):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(temple,msg.sender,_claimAmount)](contracts/admin/TempleTeamPaymentsV2.sol#L83)\n\tEvent emitted after the call(s):\n\t- [Claimed(msg.sender,_claimAmount)](contracts/admin/TempleTeamPaymentsV2.sol#L84)\n", + "first_markdown_element": "contracts/admin/TempleTeamPaymentsV2.sol#L74-L85", + "id": "e805076f6ba37558b2d1e1e33a36ca2141157b088d4472056b82f8af89078bb2", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + }, + { + "type": "node", + "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3194, + "length": 56, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "RevenueClaimed(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3260, + "length": 62, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 92 + ], + "starting_column": 9, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_getMinBucketResetIndex(uint32,uint32,uint32)" - } - }, - { - "type": "node", - "name": "_currentBucketIndex < _oneperiodDurationAgoIndex", - "source_mapping": { - "start": 5915, - "length": 121, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [143], - "starting_column": 13, - "ending_column": 134 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_getMinBucketResetIndex", - "source_mapping": { - "start": 5647, - "length": 406, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143, 144, 145], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerAllUsersPerPeriod", - "source_mapping": { - "start": 1479, - "length": 6866, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "_getMinBucketResetIndex(uint32,uint32,uint32)" + ], + "description": "Reentrancy in TreasuryFarmingRevenue.claimFor(address) (contracts/core/TreasuryFarmingRevenue.sol#80-93):\n\tExternal calls:\n\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tEvent emitted after the call(s):\n\t- RevenueClaimed(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#92)\n", + "markdown": "Reentrancy in [TreasuryFarmingRevenue.claimFor(address)](contracts/core/TreasuryFarmingRevenue.sol#L80-L93):\n\tExternal calls:\n\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tEvent emitted after the call(s):\n\t- [RevenueClaimed(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L92)\n", + "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L80-L93", + "id": "d8563f03511a537e7bffa702571db6c52a8f76800b24690b23270dd982c4ccc2", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "createExposure", + "source_mapping": { + "start": 1322, + "length": 415, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createExposure(string,string,IERC20)" + } + }, + { + "type": "node", + "name": "exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)", + "source_mapping": { + "start": 1526, + "length": 81, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 51 + ], + "starting_column": 9, + "ending_column": 90 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "createExposure", + "source_mapping": { + "start": 1322, + "length": 415, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createExposure(string,string,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "CreateExposure(address(exposure),address(pools[revalToken]))", + "source_mapping": { + "start": 1664, + "length": 66, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 53 + ], + "starting_column": 9, + "ending_column": 75 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "createExposure", + "source_mapping": { + "start": 1322, + "length": 415, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createExposure(string,string,IERC20)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleCircuitBreakerAllUsersPerPeriod._getMinBucketResetIndex(uint32,uint32,uint32) (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#140-145) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _currentBucketIndex < _oneperiodDurationAgoIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#143)\n", - "markdown": "[TempleCircuitBreakerAllUsersPerPeriod._getMinBucketResetIndex(uint32,uint32,uint32)](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L140-L145) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_currentBucketIndex < _oneperiodDurationAgoIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L143)\n", - "first_markdown_element": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L140-L145", - "id": "62847204845cb0c8231dae0ccd651ab847da9f27624c490709e49b40f8c0793c", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "currentUtilisation", - "source_mapping": { - "start": 6152, - "length": 910, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerAllUsersPerPeriod", - "source_mapping": { - "start": 1479, - "length": 6866, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in OpsManager.createExposure(string,string,IERC20) (contracts/core/OpsManager.sol#45-54):\n\tExternal calls:\n\t- exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools) (contracts/core/OpsManager.sol#51)\n\tEvent emitted after the call(s):\n\t- CreateExposure(address(exposure),address(pools[revalToken])) (contracts/core/OpsManager.sol#53)\n", + "markdown": "Reentrancy in [OpsManager.createExposure(string,string,IERC20)](contracts/core/OpsManager.sol#L45-L54):\n\tExternal calls:\n\t- [exposure = OpsManagerLib.createExposure(name,symbol,revalToken,pools)](contracts/core/OpsManager.sol#L51)\n\tEvent emitted after the call(s):\n\t- [CreateExposure(address(exposure),address(pools[revalToken]))](contracts/core/OpsManager.sol#L53)\n", + "first_markdown_element": "contracts/core/OpsManager.sol#L45-L54", + "id": "4c0848edc4ba02c1e3d1ebe7d87498d178e87ad8a446b774ebd37d6847435833", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "createVaultInstance", + "source_mapping": { + "start": 1960, + "length": 804, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createVaultInstance(string,string,uint256,uint256,Rational,uint256)" + } + }, + { + "type": "node", + "name": "templeExposure.setMinterState(address(vault),true)", + "source_mapping": { + "start": 2656, + "length": 51, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 87 + ], + "starting_column": 9, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "createVaultInstance", + "source_mapping": { + "start": 1960, + "length": 804, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createVaultInstance(string,string,uint256,uint256,Rational,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "CreateVaultInstance(address(vault))", + "source_mapping": { + "start": 2717, + "length": 40, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 88 + ], + "starting_column": 9, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "createVaultInstance", + "source_mapping": { + "start": 1960, + "length": 804, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "createVaultInstance(string,string,uint256,uint256,Rational,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "currentUtilisation()" - } - }, - { - "type": "node", - "name": "_nextBucketIndex != _currentBucketIndex", - "source_mapping": { - "start": 6625, - "length": 39, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [159], - "starting_column": 13, - "ending_column": 52 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "currentUtilisation", - "source_mapping": { - "start": 6152, - "length": 910, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerAllUsersPerPeriod", - "source_mapping": { - "start": 1479, - "length": 6866, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "currentUtilisation()" + ], + "description": "Reentrancy in OpsManager.createVaultInstance(string,string,uint256,uint256,Rational,uint256) (contracts/core/OpsManager.sol#63-89):\n\tExternal calls:\n\t- templeExposure.setMinterState(address(vault),true) (contracts/core/OpsManager.sol#87)\n\tEvent emitted after the call(s):\n\t- CreateVaultInstance(address(vault)) (contracts/core/OpsManager.sol#88)\n", + "markdown": "Reentrancy in [OpsManager.createVaultInstance(string,string,uint256,uint256,Rational,uint256)](contracts/core/OpsManager.sol#L63-L89):\n\tExternal calls:\n\t- [templeExposure.setMinterState(address(vault),true)](contracts/core/OpsManager.sol#L87)\n\tEvent emitted after the call(s):\n\t- [CreateVaultInstance(address(vault))](contracts/core/OpsManager.sol#L88)\n", + "first_markdown_element": "contracts/core/OpsManager.sol#L63-L89", + "id": "df955297def3da87ad4df693d7ae4b7e7f50baa97a7182d7ae0ddc97fdb09441", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + }, + { + "type": "node", + "name": "claimFor(account)", + "source_mapping": { + "start": 2441, + "length": 17, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 70 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3194, + "length": 56, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "DecreaseShares(account,amount)", + "source_mapping": { + "start": 2614, + "length": 36, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 76 + ], + "starting_column": 9, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "decreaseShares", + "source_mapping": { + "start": 2355, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "decreaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - }, - { - "type": "node", - "name": "_minBucketResetIndex < _nextBucketIndex", - "source_mapping": { - "start": 6833, - "length": 39, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [162], - "starting_column": 24, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "currentUtilisation", - "source_mapping": { - "start": 6152, - "length": 910, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleCircuitBreakerAllUsersPerPeriod", - "source_mapping": { - "start": 1479, - "length": 6866, - "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", - "is_dependency": false, - "lines": [ - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "currentUtilisation()" + ], + "description": "Reentrancy in TreasuryFarmingRevenue.decreaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#69-77):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#70)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tEvent emitted after the call(s):\n\t- DecreaseShares(account,amount) (contracts/core/TreasuryFarmingRevenue.sol#76)\n", + "markdown": "Reentrancy in [TreasuryFarmingRevenue.decreaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L69-L77):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L70)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tEvent emitted after the call(s):\n\t- [DecreaseShares(account,amount)](contracts/core/TreasuryFarmingRevenue.sol#L76)\n", + "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L69-L77", + "id": "10f84609b6b87bcc768aa396dd6ac6045289ca78c3cb64ee97e4437cfb7c006a", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + }, + { + "type": "node", + "name": "paymentContract.initialize(_token)", + "source_mapping": { + "start": 3274, + "length": 34, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 89 + ], + "starting_column": 9, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "paymentContract.setAllocations(_dests,_allocations)", + "source_mapping": { + "start": 3318, + "length": 52, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 90 + ], + "starting_column": 9, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "paymentContract.transferOwnership(msg.sender)", + "source_mapping": { + "start": 3381, + "length": 45, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 92 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)", + "source_mapping": { + "start": 3473, + "length": 165, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 13, + "ending_column": 14 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "FundingDeployed(lastPaidEpoch,_dests,_allocations,address(paymentContract))", + "source_mapping": { + "start": 3715, + "length": 141, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 104, + 105, + 106, + 107, + 108, + 109 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "deployPayouts", + "source_mapping": { + "start": 2818, + "length": 1078, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "deployPayouts(IERC20,address[],uint256[],uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleCircuitBreakerAllUsersPerPeriod.currentUtilisation() (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#150-169) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _nextBucketIndex != _currentBucketIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#159)\n\t- _minBucketResetIndex < _nextBucketIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#162)\n", - "markdown": "[TempleCircuitBreakerAllUsersPerPeriod.currentUtilisation()](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L150-L169) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_nextBucketIndex != _currentBucketIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L159)\n\t- [_minBucketResetIndex < _nextBucketIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L162)\n", - "first_markdown_element": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L150-L169", - "id": "824d28da623fc8596a1354a4d1ea1765d521fc6a1fdeae63acbc756dfbc451ed", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "latestDsrBalance", - "source_mapping": { - "start": 4929, - "length": 510, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [129, 130, 131, 132, 133, 134, 135, 136, 137, 138], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#79-112):\n\tExternal calls:\n\t- paymentContract.initialize(_token) (contracts/admin/TempleTeamPaymentsFactory.sol#89)\n\t- paymentContract.setAllocations(_dests,_allocations) (contracts/admin/TempleTeamPaymentsFactory.sol#90)\n\t- paymentContract.transferOwnership(msg.sender) (contracts/admin/TempleTeamPaymentsFactory.sol#92)\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding) (contracts/admin/TempleTeamPaymentsFactory.sol#95-100)\n\tEvent emitted after the call(s):\n\t- FundingDeployed(lastPaidEpoch,_dests,_allocations,address(paymentContract)) (contracts/admin/TempleTeamPaymentsFactory.sol#104-109)\n", + "markdown": "Reentrancy in [TempleTeamPaymentsFactory.deployPayouts(IERC20,address[],uint256[],uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112):\n\tExternal calls:\n\t- [paymentContract.initialize(_token)](contracts/admin/TempleTeamPaymentsFactory.sol#L89)\n\t- [paymentContract.setAllocations(_dests,_allocations)](contracts/admin/TempleTeamPaymentsFactory.sol#L90)\n\t- [paymentContract.transferOwnership(msg.sender)](contracts/admin/TempleTeamPaymentsFactory.sol#L92)\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,address(paymentContract),_totalFunding)](contracts/admin/TempleTeamPaymentsFactory.sol#L95-L100)\n\tEvent emitted after the call(s):\n\t- [FundingDeployed(lastPaidEpoch,_dests,_allocations,address(paymentContract))](contracts/admin/TempleTeamPaymentsFactory.sol#L104-L109)\n", + "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L79-L112", + "id": "e09076945359fed962d2ff6dfd37bfd369cd1b53e0192377da32895ae9a9f829", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 7408, + "length": 773, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount)", + "source_mapping": { + "start": 7964, + "length": 82, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 207 + ], + "starting_column": 13, + "ending_column": 95 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 7408, + "length": 773, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "templeExposureToken.mint(address(this),_amount)", + "source_mapping": { + "start": 8060, + "length": 48, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 208 + ], + "starting_column": 13, + "ending_column": 61 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 7408, + "length": 773, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Deposit(_account,_amount,amountStaked)", + "source_mapping": { + "start": 8129, + "length": 45, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 211 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "depositFor", + "source_mapping": { + "start": 7408, + "length": 773, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "depositFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "latestDsrBalance()" - } - }, - { - "type": "node", - "name": "(block.timestamp > rho)", - "source_mapping": { - "start": 5272, - "length": 109, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [136], - "starting_column": 9, - "ending_column": 118 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "latestDsrBalance", - "source_mapping": { - "start": 4929, - "length": 510, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [129, 130, 131, 132, 133, 134, 135, 136, 137, 138], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "latestDsrBalance()" + ], + "description": "Reentrancy in Vault.depositFor(address,uint256) (contracts/core/Vault.sol#196-212):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount) (contracts/core/Vault.sol#207)\n\t- templeExposureToken.mint(address(this),_amount) (contracts/core/Vault.sol#208)\n\tEvent emitted after the call(s):\n\t- Deposit(_account,_amount,amountStaked) (contracts/core/Vault.sol#211)\n", + "markdown": "Reentrancy in [Vault.depositFor(address,uint256)](contracts/core/Vault.sol#L196-L212):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(templeToken,msg.sender,vaultedTempleAccount,_amount)](contracts/core/Vault.sol#L207)\n\t- [templeExposureToken.mint(address(this),_amount)](contracts/core/Vault.sol#L208)\n\tEvent emitted after the call(s):\n\t- [Deposit(_account,_amount,amountStaked)](contracts/core/Vault.sol#L211)\n", + "first_markdown_element": "contracts/core/Vault.sol#L196-L212", + "id": "689116f4828c0f788fc592eb0a125792986e1b61e0aa46a6186d628790346b41", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "directPayouts", + "source_mapping": { + "start": 4101, + "length": 829, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "directPayouts(IERC20,address[],uint256[])" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)", + "source_mapping": { + "start": 4642, + "length": 59, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 133 + ], + "starting_column": 13, + "ending_column": 72 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "directPayouts", + "source_mapping": { + "start": 4101, + "length": 829, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "directPayouts(IERC20,address[],uint256[])" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "FundingPaid(lastPaidEpoch,_dests,_allocations)", + "source_mapping": { + "start": 4870, + "length": 53, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 62 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "directPayouts", + "source_mapping": { + "start": 4101, + "length": 829, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "directPayouts(IERC20,address[],uint256[])" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "DsrBaseStrategy.latestDsrBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#129-138) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- (block.timestamp > rho) (contracts/v2/strategies/DsrBaseStrategy.sol#136)\n", - "markdown": "[DsrBaseStrategy.latestDsrBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L129-L138) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [(block.timestamp > rho)](contracts/v2/strategies/DsrBaseStrategy.sol#L136)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L129-L138", - "id": "5d10ceb2f5b13a3f1d386bd3ffb62d9e64d57500eb9ce74496832fa8d54f7c5e", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[]) (contracts/admin/TempleTeamPaymentsFactory.sol#119-143):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(_token,msg.sender,dest,value) (contracts/admin/TempleTeamPaymentsFactory.sol#133)\n\tEvent emitted after the call(s):\n\t- FundingPaid(lastPaidEpoch,_dests,_allocations) (contracts/admin/TempleTeamPaymentsFactory.sol#142)\n", + "markdown": "Reentrancy in [TempleTeamPaymentsFactory.directPayouts(IERC20,address[],uint256[])](contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(_token,msg.sender,dest,value)](contracts/admin/TempleTeamPaymentsFactory.sol#L133)\n\tEvent emitted after the call(s):\n\t- [FundingPaid(lastPaidEpoch,_dests,_allocations)](contracts/admin/TempleTeamPaymentsFactory.sol#L142)\n", + "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L119-L143", + "id": "6c80a1f2386bfefc5e825932ef0f67802c5f2af3857235cf886592ad9e720a6d", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + }, + { + "type": "node", + "name": "claimFor(account)", + "source_mapping": { + "start": 2073, + "length": 17, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 57 + ], + "starting_column": 9, + "ending_column": 26 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "exposure.mint(account,unclaimedScaled / SCALING_FACTOR)", + "source_mapping": { + "start": 3194, + "length": 56, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 91 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claimFor", + "source_mapping": { + "start": 2718, + "length": 611, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "claimFor(address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls_sending_eth" + } + }, + { + "type": "node", + "name": "IncreaseShares(account,amount)", + "source_mapping": { + "start": 2246, + "length": 36, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 63 + ], + "starting_column": 9, + "ending_column": 45 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "increaseShares", + "source_mapping": { + "start": 1987, + "length": 302, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryFarmingRevenue", + "source_mapping": { + "start": 547, + "length": 3059, + "filename_relative": "contracts/core/TreasuryFarmingRevenue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/TreasuryFarmingRevenue.sol", + "filename_short": "contracts/core/TreasuryFarmingRevenue.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "increaseShares(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_checkpointChi()" - } - }, - { - "type": "node", - "name": "(block.timestamp > pot.rho())", - "source_mapping": { - "start": 5566, - "length": 60, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [142], - "starting_column": 9, - "ending_column": 69 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_checkpointChi", - "source_mapping": { - "start": 5445, - "length": 188, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "DsrBaseStrategy", - "source_mapping": { - "start": 1041, - "length": 11744, - "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", - "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", - "is_dependency": false, - "lines": [ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_checkpointChi()" + ], + "description": "Reentrancy in TreasuryFarmingRevenue.increaseShares(address,uint256) (contracts/core/TreasuryFarmingRevenue.sol#56-64):\n\tExternal calls:\n\t- claimFor(account) (contracts/core/TreasuryFarmingRevenue.sol#57)\n\t\t- exposure.mint(account,unclaimedScaled / SCALING_FACTOR) (contracts/core/TreasuryFarmingRevenue.sol#91)\n\tEvent emitted after the call(s):\n\t- IncreaseShares(account,amount) (contracts/core/TreasuryFarmingRevenue.sol#63)\n", + "markdown": "Reentrancy in [TreasuryFarmingRevenue.increaseShares(address,uint256)](contracts/core/TreasuryFarmingRevenue.sol#L56-L64):\n\tExternal calls:\n\t- [claimFor(account)](contracts/core/TreasuryFarmingRevenue.sol#L57)\n\t\t- [exposure.mint(account,unclaimedScaled / SCALING_FACTOR)](contracts/core/TreasuryFarmingRevenue.sol#L91)\n\tEvent emitted after the call(s):\n\t- [IncreaseShares(account,amount)](contracts/core/TreasuryFarmingRevenue.sol#L63)\n", + "first_markdown_element": "contracts/core/TreasuryFarmingRevenue.sol#L56-L64", + "id": "d4561252e63b6b2b82404c62a37f3524f0af810644056f99e52c4028a071621f", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "lockFor", + "source_mapping": { + "start": 943, + "length": 494, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "LockedOGTemple", + "source_mapping": { + "start": 213, + "length": 2143, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "lockFor(address,uint256,uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(OG_TEMPLE,msg.sender,address(this),_amountOGTemple)", + "source_mapping": { + "start": 1247, + "length": 111, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "lockFor", + "source_mapping": { + "start": 943, + "length": 494, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "LockedOGTemple", + "source_mapping": { + "start": 213, + "length": 2143, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "lockFor(address,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "OGTempleLocked(_staker,_amountOGTemple,_lockedUntilTimestamp)", + "source_mapping": { + "start": 1364, + "length": 68, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 52 + ], + "starting_column": 5, + "ending_column": 73 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "lockFor", + "source_mapping": { + "start": 943, + "length": 494, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "LockedOGTemple", + "source_mapping": { + "start": 213, + "length": 2143, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "lockFor(address,uint256,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "DsrBaseStrategy._checkpointChi() (contracts/v2/strategies/DsrBaseStrategy.sol#140-143) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- (block.timestamp > pot.rho()) (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n", - "markdown": "[DsrBaseStrategy._checkpointChi()](contracts/v2/strategies/DsrBaseStrategy.sol#L140-L143) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [(block.timestamp > pot.rho())](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n", - "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L140-L143", - "id": "5cfe72c68305dea88c7c4193956094120fcd3b9c0b3634e1ae80f5a9b13cb40e", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_initDebtTokenCache", - "source_mapping": { - "start": 24259, - "length": 1450, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, - 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Reentrancy in LockedOGTemple.lockFor(address,uint256,uint256) (contracts/deprecated/LockedOGTemple.sol#35-53):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(OG_TEMPLE,msg.sender,address(this),_amountOGTemple) (contracts/deprecated/LockedOGTemple.sol#46-51)\n\tEvent emitted after the call(s):\n\t- OGTempleLocked(_staker,_amountOGTemple,_lockedUntilTimestamp) (contracts/deprecated/LockedOGTemple.sol#52)\n", + "markdown": "Reentrancy in [LockedOGTemple.lockFor(address,uint256,uint256)](contracts/deprecated/LockedOGTemple.sol#L35-L53):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(OG_TEMPLE,msg.sender,address(this),_amountOGTemple)](contracts/deprecated/LockedOGTemple.sol#L46-L51)\n\tEvent emitted after the call(s):\n\t- [OGTempleLocked(_staker,_amountOGTemple,_lockedUntilTimestamp)](contracts/deprecated/LockedOGTemple.sol#L52)\n", + "first_markdown_element": "contracts/deprecated/LockedOGTemple.sol#L35-L53", + "id": "4230808e1cd7a4f58313604bd2841ce355116b1beb66b33f45e8990f931fb60f", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 2526, + "length": 244, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultEarlyWithdraw", + "source_mapping": { + "start": 548, + "length": 2224, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + }, + { + "type": "node", + "name": "IERC20(token).safeTransfer(to,amount)", + "source_mapping": { + "start": 2677, + "length": 38, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 75 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 2526, + "length": 244, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultEarlyWithdraw", + "source_mapping": { + "start": 548, + "length": 2224, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "TokenRecovered(token,to,amount)", + "source_mapping": { + "start": 2725, + "length": 38, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 76 + ], + "starting_column": 9, + "ending_column": 47 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "recoverToken", + "source_mapping": { + "start": 2526, + "length": 244, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 73, + 74, + 75, + 76, + 77 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultEarlyWithdraw", + "source_mapping": { + "start": 548, + "length": 2224, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "recoverToken(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "_initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)" - } - }, - { - "type": "node", - "name": "_timeElapsed > 0", - "source_mapping": { - "start": 25121, - "length": 16, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [641], - "starting_column": 13, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_initDebtTokenCache", - "source_mapping": { - "start": 24259, - "length": 1450, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, - 658 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)" + ], + "description": "Reentrancy in VaultEarlyWithdraw.recoverToken(address,address,uint256) (contracts/core/VaultEarlyWithdraw.sol#73-77):\n\tExternal calls:\n\t- IERC20(token).safeTransfer(to,amount) (contracts/core/VaultEarlyWithdraw.sol#75)\n\tEvent emitted after the call(s):\n\t- TokenRecovered(token,to,amount) (contracts/core/VaultEarlyWithdraw.sol#76)\n", + "markdown": "Reentrancy in [VaultEarlyWithdraw.recoverToken(address,address,uint256)](contracts/core/VaultEarlyWithdraw.sol#L73-L77):\n\tExternal calls:\n\t- [IERC20(token).safeTransfer(to,amount)](contracts/core/VaultEarlyWithdraw.sol#L75)\n\tEvent emitted after the call(s):\n\t- [TokenRecovered(token,to,amount)](contracts/core/VaultEarlyWithdraw.sol#L76)\n", + "first_markdown_element": "contracts/core/VaultEarlyWithdraw.sol#L73-L77", + "id": "1c3c00beda0eb4b0661cc31987f0cf4c864705a836f5da0004529d20a3b860b8", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "redeemAmount", + "source_mapping": { + "start": 3060, + "length": 296, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Exposure", + "source_mapping": { + "start": 362, + "length": 3820, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "redeemAmount(uint256,address)" + } + }, + { + "type": "node", + "name": "liquidator.toTemple(amount,to)", + "source_mapping": { + "start": 3241, + "length": 31, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 109 + ], + "starting_column": 13, + "ending_column": 44 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "redeemAmount", + "source_mapping": { + "start": 3060, + "length": 296, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Exposure", + "source_mapping": { + "start": 362, + "length": 3820, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "redeemAmount(uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Redeem(address(revalToken),msg.sender,to,amount)", + "source_mapping": { + "start": 3293, + "length": 56, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 112 + ], + "starting_column": 9, + "ending_column": 65 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "redeemAmount", + "source_mapping": { + "start": 3060, + "length": 296, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Exposure", + "source_mapping": { + "start": 362, + "length": 3820, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "redeemAmount(uint256,address)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#619-658) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _timeElapsed > 0 (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#641)\n", - "markdown": "[TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L619-L658) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_timeElapsed > 0](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L641)\n", - "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L619-L658", - "id": "1d9fb732d9369c4da234795950c435996e1f5d0b0c4fd71e2ad0007ec6f7558b", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "calculateClaimable", - "source_mapping": { - "start": 1893, - "length": 581, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in Exposure.redeemAmount(uint256,address) (contracts/core/Exposure.sol#104-113):\n\tExternal calls:\n\t- liquidator.toTemple(amount,to) (contracts/core/Exposure.sol#109)\n\tEvent emitted after the call(s):\n\t- Redeem(address(revalToken),msg.sender,to,amount) (contracts/core/Exposure.sol#112)\n", + "markdown": "Reentrancy in [Exposure.redeemAmount(uint256,address)](contracts/core/Exposure.sol#L104-L113):\n\tExternal calls:\n\t- [liquidator.toTemple(amount,to)](contracts/core/Exposure.sol#L109)\n\tEvent emitted after the call(s):\n\t- [Redeem(address(revalToken),msg.sender,to,amount)](contracts/core/Exposure.sol#L112)\n", + "first_markdown_element": "contracts/core/Exposure.sol#L104-L113", + "id": "5c348eea3fa61ccb6c1609a61dfbf2ea3d76c031d344e46e4a98a0d17d2298c4", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "stakeFor", + "source_mapping": { + "start": 4887, + "length": 624, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "stakeFor(address,uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransferFrom(TEMPLE,msg.sender,address(this),_amountTemple)", + "source_mapping": { + "start": 5291, + "length": 76, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 131 + ], + "starting_column": 9, + "ending_column": 85 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "stakeFor", + "source_mapping": { + "start": 4887, + "length": 624, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "stakeFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "OG_TEMPLE.mint(_staker,amountOgTemple)", + "source_mapping": { + "start": 5377, + "length": 39, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 132 + ], + "starting_column": 9, + "ending_column": 48 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "stakeFor", + "source_mapping": { + "start": 4887, + "length": 624, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "stakeFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "StakeCompleted(_staker,_amountTemple,0)", + "source_mapping": { + "start": 5426, + "length": 46, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 133 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "stakeFor", + "source_mapping": { + "start": 4887, + "length": 624, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "stakeFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "calculateClaimable(address)" - } - }, - { - "type": "node", - "name": "claimableAmount + claimed[_address] > allocation[_address]", - "source_mapping": { - "start": 2293, - "length": 58, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [68], - "starting_column": 13, - "ending_column": 71 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "calculateClaimable", - "source_mapping": { - "start": 1893, - "length": 581, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "calculateClaimable(address)" + ], + "description": "Reentrancy in TempleStaking.stakeFor(address,uint256) (contracts/deprecated/TempleStaking.sol#123-136):\n\tExternal calls:\n\t- SafeERC20.safeTransferFrom(TEMPLE,msg.sender,address(this),_amountTemple) (contracts/deprecated/TempleStaking.sol#131)\n\t- OG_TEMPLE.mint(_staker,amountOgTemple) (contracts/deprecated/TempleStaking.sol#132)\n\tEvent emitted after the call(s):\n\t- StakeCompleted(_staker,_amountTemple,0) (contracts/deprecated/TempleStaking.sol#133)\n", + "markdown": "Reentrancy in [TempleStaking.stakeFor(address,uint256)](contracts/deprecated/TempleStaking.sol#L123-L136):\n\tExternal calls:\n\t- [SafeERC20.safeTransferFrom(TEMPLE,msg.sender,address(this),_amountTemple)](contracts/deprecated/TempleStaking.sol#L131)\n\t- [OG_TEMPLE.mint(_staker,amountOgTemple)](contracts/deprecated/TempleStaking.sol#L132)\n\tEvent emitted after the call(s):\n\t- [StakeCompleted(_staker,_amountTemple,0)](contracts/deprecated/TempleStaking.sol#L133)\n", + "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L123-L136", + "id": "b18c05c7e4e0c35ebb87b7dbe818caa384c5e387f2a89d762dad2c9429dad39c", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "unstake", + "source_mapping": { + "start": 5711, + "length": 576, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "unstake(uint256)" + } + }, + { + "type": "node", + "name": "OG_TEMPLE.burnFrom(msg.sender,_amountOgTemple)", + "source_mapping": { + "start": 6017, + "length": 47, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 150 + ], + "starting_column": 9, + "ending_column": 56 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "unstake", + "source_mapping": { + "start": 5711, + "length": 576, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "unstake(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "SafeERC20.safeIncreaseAllowance(TEMPLE,address(EXIT_QUEUE),unstakeBalanceTemple)", + "source_mapping": { + "start": 6074, + "length": 82, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 151 + ], + "starting_column": 9, + "ending_column": 91 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "unstake", + "source_mapping": { + "start": 5711, + "length": 576, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "unstake(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "EXIT_QUEUE.join(msg.sender,unstakeBalanceTemple)", + "source_mapping": { + "start": 6166, + "length": 49, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 152 + ], + "starting_column": 9, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "unstake", + "source_mapping": { + "start": 5711, + "length": 576, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "unstake(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "UnstakeCompleted(msg.sender,_amountOgTemple)", + "source_mapping": { + "start": 6226, + "length": 50, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 154 + ], + "starting_column": 9, + "ending_column": 59 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "unstake", + "source_mapping": { + "start": 5711, + "length": 576, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "unstake(uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleTeamPayments.calculateClaimable(address) (contracts/admin/TempleTeamPayments.sol#57-72) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- claimableAmount + claimed[_address] > allocation[_address] (contracts/admin/TempleTeamPayments.sol#68)\n", - "markdown": "[TempleTeamPayments.calculateClaimable(address)](contracts/admin/TempleTeamPayments.sol#L57-L72) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [claimableAmount + claimed[_address] > allocation[_address]](contracts/admin/TempleTeamPayments.sol#L68)\n", - "first_markdown_element": "contracts/admin/TempleTeamPayments.sol#L57-L72", - "id": "3c50b29e16f7abe9424e2eb7ddf7dd3a9178954836a5700181e781d6cab69a90", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "claim", - "source_mapping": { - "start": 2480, - "length": 355, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77, 78, 79, 80, 81], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in TempleStaking.unstake(uint256) (contracts/deprecated/TempleStaking.sol#144-155):\n\tExternal calls:\n\t- OG_TEMPLE.burnFrom(msg.sender,_amountOgTemple) (contracts/deprecated/TempleStaking.sol#150)\n\t- SafeERC20.safeIncreaseAllowance(TEMPLE,address(EXIT_QUEUE),unstakeBalanceTemple) (contracts/deprecated/TempleStaking.sol#151)\n\t- EXIT_QUEUE.join(msg.sender,unstakeBalanceTemple) (contracts/deprecated/TempleStaking.sol#152)\n\tEvent emitted after the call(s):\n\t- UnstakeCompleted(msg.sender,_amountOgTemple) (contracts/deprecated/TempleStaking.sol#154)\n", + "markdown": "Reentrancy in [TempleStaking.unstake(uint256)](contracts/deprecated/TempleStaking.sol#L144-L155):\n\tExternal calls:\n\t- [OG_TEMPLE.burnFrom(msg.sender,_amountOgTemple)](contracts/deprecated/TempleStaking.sol#L150)\n\t- [SafeERC20.safeIncreaseAllowance(TEMPLE,address(EXIT_QUEUE),unstakeBalanceTemple)](contracts/deprecated/TempleStaking.sol#L151)\n\t- [EXIT_QUEUE.join(msg.sender,unstakeBalanceTemple)](contracts/deprecated/TempleStaking.sol#L152)\n\tEvent emitted after the call(s):\n\t- [UnstakeCompleted(msg.sender,_amountOgTemple)](contracts/deprecated/TempleStaking.sol#L154)\n", + "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L144-L155", + "id": "325fc57e8f6e1cecb7323feddec38c5b7507dd1c8d9a046aa8b2c362a40ad09b", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 1870, + "length": 562, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultEarlyWithdraw", + "source_mapping": { + "start": 548, + "length": 2224, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdraw(address,uint256)" + } + }, + { + "type": "node", + "name": "IERC20(_vault).safeTransferFrom(msg.sender,owner(),_templeAmount)", + "source_mapping": { + "start": 2162, + "length": 67, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 62 + ], + "starting_column": 9, + "ending_column": 76 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 1870, + "length": 562, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultEarlyWithdraw", + "source_mapping": { + "start": 548, + "length": 2224, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdraw(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "templeToken.safeTransfer(msg.sender,_templeAmount)", + "source_mapping": { + "start": 2318, + "length": 51, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 65 + ], + "starting_column": 9, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 1870, + "length": 562, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultEarlyWithdraw", + "source_mapping": { + "start": 548, + "length": 2224, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdraw(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "EarlyWithdraw(msg.sender,_templeAmount)", + "source_mapping": { + "start": 2380, + "length": 45, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 67 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 1870, + "length": 562, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultEarlyWithdraw", + "source_mapping": { + "start": 548, + "length": 2224, + "filename_relative": "contracts/core/VaultEarlyWithdraw.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultEarlyWithdraw.sol", + "filename_short": "contracts/core/VaultEarlyWithdraw.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdraw(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "claim()" - } - }, - { - "type": "node", - "name": "require(bool,string)(claimable > 0,TempleTeamPayments: Member has no TEMPLE to claim)", - "source_mapping": { - "start": 2602, - "length": 75, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [76], - "starting_column": 9, - "ending_column": 84 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "claim", - "source_mapping": { - "start": 2480, - "length": 355, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [74, 75, 76, 77, 78, 79, 80, 81], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleTeamPayments", - "source_mapping": { - "start": 247, - "length": 3130, - "filename_relative": "contracts/admin/TempleTeamPayments.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", - "filename_short": "contracts/admin/TempleTeamPayments.sol", - "is_dependency": false, - "lines": [ - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "claim()" + ], + "description": "Reentrancy in VaultEarlyWithdraw.withdraw(address,uint256) (contracts/core/VaultEarlyWithdraw.sol#57-68):\n\tExternal calls:\n\t- IERC20(_vault).safeTransferFrom(msg.sender,owner(),_templeAmount) (contracts/core/VaultEarlyWithdraw.sol#62)\n\t- templeToken.safeTransfer(msg.sender,_templeAmount) (contracts/core/VaultEarlyWithdraw.sol#65)\n\tEvent emitted after the call(s):\n\t- EarlyWithdraw(msg.sender,_templeAmount) (contracts/core/VaultEarlyWithdraw.sol#67)\n", + "markdown": "Reentrancy in [VaultEarlyWithdraw.withdraw(address,uint256)](contracts/core/VaultEarlyWithdraw.sol#L57-L68):\n\tExternal calls:\n\t- [IERC20(_vault).safeTransferFrom(msg.sender,owner(),_templeAmount)](contracts/core/VaultEarlyWithdraw.sol#L62)\n\t- [templeToken.safeTransfer(msg.sender,_templeAmount)](contracts/core/VaultEarlyWithdraw.sol#L65)\n\tEvent emitted after the call(s):\n\t- [EarlyWithdraw(msg.sender,_templeAmount)](contracts/core/VaultEarlyWithdraw.sol#L67)\n", + "first_markdown_element": "contracts/core/VaultEarlyWithdraw.sol#L57-L68", + "id": "7a41d062356aa90302a9b5d0829abad146259b6d909dd1702764a586f2839691", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 8505, + "length": 349, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,address,uint256)" + } + }, + { + "type": "node", + "name": "templeExposureToken.redeemAmount(_amount,_to)", + "source_mapping": { + "start": 8759, + "length": 46, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 227 + ], + "starting_column": 9, + "ending_column": 55 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 8505, + "length": 349, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "Withdraw(_account,_amount)", + "source_mapping": { + "start": 8815, + "length": 32, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 228 + ], + "starting_column": 9, + "ending_column": 41 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 8505, + "length": 349, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "TempleTeamPayments.claim() (contracts/admin/TempleTeamPayments.sol#74-81) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(claimable > 0,TempleTeamPayments: Member has no TEMPLE to claim) (contracts/admin/TempleTeamPayments.sol#76)\n", - "markdown": "[TempleTeamPayments.claim()](contracts/admin/TempleTeamPayments.sol#L74-L81) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(claimable > 0,TempleTeamPayments: Member has no TEMPLE to claim)](contracts/admin/TempleTeamPayments.sol#L76)\n", - "first_markdown_element": "contracts/admin/TempleTeamPayments.sol#L74-L81", - "id": "d2cf6a934d99b6df0f4c782f92abbc6344366c44c011b9e95bdc6171398e7715", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 3932, - "length": 543, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in Vault.withdrawFor(address,address,uint256) (contracts/core/Vault.sol#220-229):\n\tExternal calls:\n\t- templeExposureToken.redeemAmount(_amount,_to) (contracts/core/Vault.sol#227)\n\tEvent emitted after the call(s):\n\t- Withdraw(_account,_amount) (contracts/core/Vault.sol#228)\n", + "markdown": "Reentrancy in [Vault.withdrawFor(address,address,uint256)](contracts/core/Vault.sol#L220-L229):\n\tExternal calls:\n\t- [templeExposureToken.redeemAmount(_amount,_to)](contracts/core/Vault.sol#L227)\n\tEvent emitted after the call(s):\n\t- [Withdraw(_account,_amount)](contracts/core/Vault.sol#L228)\n", + "first_markdown_element": "contracts/core/Vault.sol#L220-L229", + "id": "63e868ac379538e3598eed469ba9a28458891a3aec02e3895802a5953d73a01a", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 1642, + "length": 627, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "LockedOGTemple", + "source_mapping": { + "start": 213, + "length": 2143, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransfer(OG_TEMPLE,_staker,entry.BalanceOGTemple)", + "source_mapping": { + "start": 2140, + "length": 65, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 79 + ], + "starting_column": 5, + "ending_column": 70 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 1642, + "length": 627, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "LockedOGTemple", + "source_mapping": { + "start": 213, + "length": 2143, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "OGTempleWithdraw(_staker,entry.BalanceOGTemple)", + "source_mapping": { + "start": 2211, + "length": 53, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 80 + ], + "starting_column": 5, + "ending_column": 58 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 1642, + "length": 627, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "LockedOGTemple", + "source_mapping": { + "start": 213, + "length": 2143, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)" - } - }, - { - "type": "node", - "name": "require(bool,string)(block.timestamp <= deadline,Vault: expired deadline)", - "source_mapping": { - "start": 4050, - "length": 63, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [101], - "starting_column": 9, - "ending_column": 72 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 3932, - "length": 543, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)" + ], + "description": "Reentrancy in LockedOGTemple.withdrawFor(address,uint256) (contracts/deprecated/LockedOGTemple.sol#62-81):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(OG_TEMPLE,_staker,entry.BalanceOGTemple) (contracts/deprecated/LockedOGTemple.sol#79)\n\tEvent emitted after the call(s):\n\t- OGTempleWithdraw(_staker,entry.BalanceOGTemple) (contracts/deprecated/LockedOGTemple.sol#80)\n", + "markdown": "Reentrancy in [LockedOGTemple.withdrawFor(address,uint256)](contracts/deprecated/LockedOGTemple.sol#L62-L81):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(OG_TEMPLE,_staker,entry.BalanceOGTemple)](contracts/deprecated/LockedOGTemple.sol#L79)\n\tEvent emitted after the call(s):\n\t- [OGTempleWithdraw(_staker,entry.BalanceOGTemple)](contracts/deprecated/LockedOGTemple.sol#L80)\n", + "first_markdown_element": "contracts/deprecated/LockedOGTemple.sol#L62-L81", + "id": "1121dbdb9cb432f782fa1dcd86b226568d78c9cf57bb807ccdc10360eed217f4", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawToken", + "source_mapping": { + "start": 1781, + "length": 248, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 58, + 59, + 60, + 61, + 62 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawToken(IERC20,uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransfer(_token,msg.sender,_amount)", + "source_mapping": { + "start": 1916, + "length": 51, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 60 + ], + "starting_column": 9, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawToken", + "source_mapping": { + "start": 1781, + "length": 248, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 58, + 59, + 60, + 61, + 62 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawToken(IERC20,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "TokenRecovered(address(_token),_amount)", + "source_mapping": { + "start": 1977, + "length": 45, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 61 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawToken", + "source_mapping": { + "start": 1781, + "length": 248, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 58, + 59, + 60, + 61, + 62 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsFactory", + "source_mapping": { + "start": 279, + "length": 4653, + "filename_relative": "contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsFactory.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsFactory.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawToken(IERC20,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - } - } - } - ], - "description": "Vault.withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32) (contracts/core/Vault.sol#100-110) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(block.timestamp <= deadline,Vault: expired deadline) (contracts/core/Vault.sol#101)\n", - "markdown": "[Vault.withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)](contracts/core/Vault.sol#L100-L110) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(block.timestamp <= deadline,Vault: expired deadline)](contracts/core/Vault.sol#L101)\n", - "first_markdown_element": "contracts/core/Vault.sol#L100-L110", - "id": "23a917169154350b1f8e103875cf17fe3784896b355e9f9441c8bdfede6fc4a3", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "inEnterExitWindow", - "source_mapping": { - "start": 5359, - "length": 569, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143, 144, 145, 146, 147, 148], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "Reentrancy in TempleTeamPaymentsFactory.withdrawToken(IERC20,uint256) (contracts/admin/TempleTeamPaymentsFactory.sol#58-62):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(_token,msg.sender,_amount) (contracts/admin/TempleTeamPaymentsFactory.sol#60)\n\tEvent emitted after the call(s):\n\t- TokenRecovered(address(_token),_amount) (contracts/admin/TempleTeamPaymentsFactory.sol#61)\n", + "markdown": "Reentrancy in [TempleTeamPaymentsFactory.withdrawToken(IERC20,uint256)](contracts/admin/TempleTeamPaymentsFactory.sol#L58-L62):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(_token,msg.sender,_amount)](contracts/admin/TempleTeamPaymentsFactory.sol#L60)\n\tEvent emitted after the call(s):\n\t- [TokenRecovered(address(_token),_amount)](contracts/admin/TempleTeamPaymentsFactory.sol#L61)\n", + "first_markdown_element": "contracts/admin/TempleTeamPaymentsFactory.sol#L58-L62", + "id": "953d8875749802563ce4b05772559dd5c6f58bf7e3ad4f1c24b9968cf0977dca", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawToken", + "source_mapping": { + "start": 1910, + "length": 248, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 59, + 60, + 61, + 62, + 63 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsV2", + "source_mapping": { + "start": 346, + "length": 2589, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawToken(IERC20,uint256)" + } + }, + { + "type": "node", + "name": "SafeERC20.safeTransfer(_token,msg.sender,_amount)", + "source_mapping": { + "start": 2045, + "length": 51, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 61 + ], + "starting_column": 9, + "ending_column": 60 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawToken", + "source_mapping": { + "start": 1910, + "length": 248, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 59, + 60, + 61, + 62, + 63 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsV2", + "source_mapping": { + "start": 346, + "length": 2589, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawToken(IERC20,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "external_calls" + } + }, + { + "type": "node", + "name": "TokenRecovered(address(_token),_amount)", + "source_mapping": { + "start": 2106, + "length": 45, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 62 + ], + "starting_column": 9, + "ending_column": 54 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawToken", + "source_mapping": { + "start": 1910, + "length": 248, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 59, + 60, + 61, + 62, + 63 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPaymentsV2", + "source_mapping": { + "start": 346, + "length": 2589, + "filename_relative": "contracts/admin/TempleTeamPaymentsV2.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPaymentsV2.sol", + "filename_short": "contracts/admin/TempleTeamPaymentsV2.sol", + "is_dependency": false, + "lines": [ + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawToken(IERC20,uint256)" + } + } + }, + "additional_fields": { + "underlying_type": "event" + } } - }, - "signature": "inEnterExitWindow()" - } - }, - { - "type": "node", - "name": "block.timestamp < firstPeriodStartTimestamp", - "source_mapping": { - "start": 5459, - "length": 43, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [141], - "starting_column": 13, - "ending_column": 56 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "inEnterExitWindow", - "source_mapping": { - "start": 5359, - "length": 569, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143, 144, 145, 146, 147, 148], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "inEnterExitWindow()" + ], + "description": "Reentrancy in TempleTeamPaymentsV2.withdrawToken(IERC20,uint256) (contracts/admin/TempleTeamPaymentsV2.sol#59-63):\n\tExternal calls:\n\t- SafeERC20.safeTransfer(_token,msg.sender,_amount) (contracts/admin/TempleTeamPaymentsV2.sol#61)\n\tEvent emitted after the call(s):\n\t- TokenRecovered(address(_token),_amount) (contracts/admin/TempleTeamPaymentsV2.sol#62)\n", + "markdown": "Reentrancy in [TempleTeamPaymentsV2.withdrawToken(IERC20,uint256)](contracts/admin/TempleTeamPaymentsV2.sol#L59-L63):\n\tExternal calls:\n\t- [SafeERC20.safeTransfer(_token,msg.sender,_amount)](contracts/admin/TempleTeamPaymentsV2.sol#L61)\n\tEvent emitted after the call(s):\n\t- [TokenRecovered(address(_token),_amount)](contracts/admin/TempleTeamPaymentsV2.sol#L62)\n", + "first_markdown_element": "contracts/admin/TempleTeamPaymentsV2.sol#L59-L63", + "id": "1448ab1692e2240869b3f86449f76a8cb3919b98c18052b582afb147fffce7f0", + "check": "reentrancy-events", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + }, + { + "type": "node", + "name": "timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0", + "source_mapping": { + "start": 3460, + "length": 51, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 84 + ], + "starting_column": 13, + "ending_column": 64 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_update", + "source_mapping": { + "start": 3107, + "length": 847, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_update(uint256,uint256,uint112,uint112)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp", - "source_mapping": { - "start": 5783, - "length": 138, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [147], - "starting_column": 9, - "ending_column": 147 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "inEnterExitWindow", - "source_mapping": { - "start": 5359, - "length": 569, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [140, 141, 142, 143, 144, 145, 146, 147, 148], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Vault", - "source_mapping": { - "start": 1161, - "length": 7823, - "filename_relative": "contracts/core/Vault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", - "filename_short": "contracts/core/Vault.sol", - "is_dependency": false, - "lines": [ - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "inEnterExitWindow()" + ], + "description": "TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112) (contracts/amm/TempleUniswapV2Pair.sol#80-93) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0 (contracts/amm/TempleUniswapV2Pair.sol#84)\n", + "markdown": "[TempleUniswapV2Pair._update(uint256,uint256,uint112,uint112)](contracts/amm/TempleUniswapV2Pair.sol#L80-L93) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0](contracts/amm/TempleUniswapV2Pair.sol#L84)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L80-L93", + "id": "3e4c1fb2f0df938570805f2a5513be58a1af7dd63232a6822178ed2775dc9957", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_initBaseCache", + "source_mapping": { + "start": 26049, + "length": 748, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleDebtToken", + "source_mapping": { + "start": 2202, + "length": 30641, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_initBaseCache(TempleDebtToken.BaseCache)" + } + }, + { + "type": "node", + "name": "_timeElapsed > 0", + "source_mapping": { + "start": 26435, + "length": 16, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 607 + ], + "starting_column": 13, + "ending_column": 29 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_initBaseCache", + "source_mapping": { + "start": 26049, + "length": 748, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleDebtToken", + "source_mapping": { + "start": 2202, + "length": 30641, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_initBaseCache(TempleDebtToken.BaseCache)" + } + } + } } - } - } - } - ], - "description": "Vault.inEnterExitWindow() (contracts/core/Vault.sol#140-148) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp < firstPeriodStartTimestamp (contracts/core/Vault.sol#141)\n\t- inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp (contracts/core/Vault.sol#147)\n", - "markdown": "[Vault.inEnterExitWindow()](contracts/core/Vault.sol#L140-L148) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp < firstPeriodStartTimestamp](contracts/core/Vault.sol#L141)\n\t- [inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp](contracts/core/Vault.sol#L147)\n", - "first_markdown_element": "contracts/core/Vault.sol#L140-L148", - "id": "1ec8a1ed491ee4363e9d98709e6ea81c368e5197aa117baaec3fb5dca7a37050", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 1642, - "length": 627, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LockedOGTemple", - "source_mapping": { - "start": 213, - "length": 2143, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "TempleDebtToken._initBaseCache(TempleDebtToken.BaseCache) (contracts/v2/TempleDebtToken.sol#597-617) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _timeElapsed > 0 (contracts/v2/TempleDebtToken.sol#607)\n", + "markdown": "[TempleDebtToken._initBaseCache(TempleDebtToken.BaseCache)](contracts/v2/TempleDebtToken.sol#L597-L617) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_timeElapsed > 0](contracts/v2/TempleDebtToken.sol#L607)\n", + "first_markdown_element": "contracts/v2/TempleDebtToken.sol#L597-L617", + "id": "31468fb88b544bfa40953f9c670145ae2d6cc30a857f141027542b78efe5314e", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_initDebtorCache", + "source_mapping": { + "start": 28507, + "length": 2281, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleDebtToken", + "source_mapping": { + "start": 2202, + "length": 30641, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_initDebtorCache(TempleDebtToken.BaseCache,ITempleDebtToken.Debtor,TempleDebtToken.DebtorCache,bool)" + } + }, + { + "type": "node", + "name": "_timeElapsed > 0", + "source_mapping": { + "start": 29667, + "length": 16, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 703 + ], + "starting_column": 13, + "ending_column": 29 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_initDebtorCache", + "source_mapping": { + "start": 28507, + "length": 2281, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleDebtToken", + "source_mapping": { + "start": 2202, + "length": 30641, + "filename_relative": "contracts/v2/TempleDebtToken.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TempleDebtToken.sol", + "filename_short": "contracts/v2/TempleDebtToken.sol", + "is_dependency": false, + "lines": [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_initDebtorCache(TempleDebtToken.BaseCache,ITempleDebtToken.Debtor,TempleDebtToken.DebtorCache,bool)" + } + } + } } - }, - "signature": "withdrawFor(address,uint256)" - } - }, - { - "type": "node", - "name": "require(bool,string)(lockedEntries[_idx].LockedUntilTimestamp < block.timestamp,Specified entry is still locked)", - "source_mapping": { - "start": 1867, - "length": 120, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [69, 70, 71, 72], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdrawFor", - "source_mapping": { - "start": 1642, - "length": 627, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81 - ], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LockedOGTemple", - "source_mapping": { - "start": 213, - "length": 2143, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "withdrawFor(address,uint256)" + ], + "description": "TempleDebtToken._initDebtorCache(TempleDebtToken.BaseCache,ITempleDebtToken.Debtor,TempleDebtToken.DebtorCache,bool) (contracts/v2/TempleDebtToken.sol#672-727) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _timeElapsed > 0 (contracts/v2/TempleDebtToken.sol#703)\n", + "markdown": "[TempleDebtToken._initDebtorCache(TempleDebtToken.BaseCache,ITempleDebtToken.Debtor,TempleDebtToken.DebtorCache,bool)](contracts/v2/TempleDebtToken.sol#L672-L727) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_timeElapsed > 0](contracts/v2/TempleDebtToken.sol#L703)\n", + "first_markdown_element": "contracts/v2/TempleDebtToken.sol#L672-L727", + "id": "a6d589cd4caf5ac6f228dd6218ef29c77e92ed66db618140855c2644b3b2cb10", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "treasuryPriceIndex", + "source_mapping": { + "start": 2676, + "length": 309, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 70, + 71, + 72, + 73, + 74 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryPriceIndexOracle", + "source_mapping": { + "start": 672, + "length": 3918, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "treasuryPriceIndex()" + } + }, + { + "type": "node", + "name": "(block.timestamp < (tpiData.lastUpdatedAt + tpiData.cooldownSecs))", + "source_mapping": { + "start": 2754, + "length": 204, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 71, + 72, + 73 + ], + "starting_column": 9, + "ending_column": 33 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "treasuryPriceIndex", + "source_mapping": { + "start": 2676, + "length": 309, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 70, + 71, + 72, + 73, + 74 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryPriceIndexOracle", + "source_mapping": { + "start": 672, + "length": 3918, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "treasuryPriceIndex()" + } + } + } } - } - } - } - ], - "description": "LockedOGTemple.withdrawFor(address,uint256) (contracts/deprecated/LockedOGTemple.sol#62-81) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(lockedEntries[_idx].LockedUntilTimestamp < block.timestamp,Specified entry is still locked) (contracts/deprecated/LockedOGTemple.sol#69-72)\n", - "markdown": "[LockedOGTemple.withdrawFor(address,uint256)](contracts/deprecated/LockedOGTemple.sol#L62-L81) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(lockedEntries[_idx].LockedUntilTimestamp < block.timestamp,Specified entry is still locked)](contracts/deprecated/LockedOGTemple.sol#L69-L72)\n", - "first_markdown_element": "contracts/deprecated/LockedOGTemple.sol#L62-L81", - "id": "87a3b425d06a0ad7aa92a349ed04204eb047ebb07373cbfbcf3ed5aaaf25be67", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1568, - "length": 783, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TreasuryPriceIndexOracle.treasuryPriceIndex() (contracts/v2/TreasuryPriceIndexOracle.sol#70-74) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- (block.timestamp < (tpiData.lastUpdatedAt + tpiData.cooldownSecs)) (contracts/v2/TreasuryPriceIndexOracle.sol#71-73)\n", + "markdown": "[TreasuryPriceIndexOracle.treasuryPriceIndex()](contracts/v2/TreasuryPriceIndexOracle.sol#L70-L74) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [(block.timestamp < (tpiData.lastUpdatedAt + tpiData.cooldownSecs))](contracts/v2/TreasuryPriceIndexOracle.sol#L71-L73)\n", + "first_markdown_element": "contracts/v2/TreasuryPriceIndexOracle.sol#L70-L74", + "id": "649566e5b9f48d4a53dd158c2137fe6a456902d4dbc71fadce5826d8bdeea4cf", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "setTreasuryPriceIndex", + "source_mapping": { + "start": 3772, + "length": 815, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryPriceIndexOracle", + "source_mapping": { + "start": 672, + "length": 3918, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTreasuryPriceIndex(uint96)" + } + }, + { + "type": "node", + "name": "_delta > maxTreasuryPriceIndexDelta", + "source_mapping": { + "start": 4199, + "length": 35, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 105 + ], + "starting_column": 17, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTreasuryPriceIndex", + "source_mapping": { + "start": 3772, + "length": 815, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryPriceIndexOracle", + "source_mapping": { + "start": 672, + "length": 3918, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTreasuryPriceIndex(uint96)" + } + } + } + }, + { + "type": "node", + "name": "(_newTpi > _oldTpi)", + "source_mapping": { + "start": 4105, + "length": 76, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 104 + ], + "starting_column": 13, + "ending_column": 89 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "setTreasuryPriceIndex", + "source_mapping": { + "start": 3772, + "length": 815, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TreasuryPriceIndexOracle", + "source_mapping": { + "start": 672, + "length": 3918, + "filename_relative": "contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryPriceIndexOracle.sol", + "filename_short": "contracts/v2/TreasuryPriceIndexOracle.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "setTreasuryPriceIndex(uint96)" + } + } + } } - }, - "signature": "constructor(IERC20,IExitQueue,uint256,uint256)" - } - }, - { - "type": "node", - "name": "require(bool,string)(_startTimestamp < block.timestamp,Start timestamp must be in the past)", - "source_mapping": { - "start": 1716, - "length": 81, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [51], - "starting_column": 9, - "ending_column": 90 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1568, - "length": 783, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(IERC20,IExitQueue,uint256,uint256)" + ], + "description": "TreasuryPriceIndexOracle.setTreasuryPriceIndex(uint96) (contracts/v2/TreasuryPriceIndexOracle.sol#97-116) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _delta > maxTreasuryPriceIndexDelta (contracts/v2/TreasuryPriceIndexOracle.sol#105)\n\t- (_newTpi > _oldTpi) (contracts/v2/TreasuryPriceIndexOracle.sol#104)\n", + "markdown": "[TreasuryPriceIndexOracle.setTreasuryPriceIndex(uint96)](contracts/v2/TreasuryPriceIndexOracle.sol#L97-L116) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_delta > maxTreasuryPriceIndexDelta](contracts/v2/TreasuryPriceIndexOracle.sol#L105)\n\t- [(_newTpi > _oldTpi)](contracts/v2/TreasuryPriceIndexOracle.sol#L104)\n", + "first_markdown_element": "contracts/v2/TreasuryPriceIndexOracle.sol#L97-L116", + "id": "27e472ea358357b1aa713a4753b654ee999cc773f1704e268101424130b80b61", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "preCheck", + "source_mapping": { + "start": 3551, + "length": 1277, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerAllUsersPerPeriod", + "source_mapping": { + "start": 1479, + "length": 6866, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "preCheck(address,uint256)" + } + }, + { + "type": "node", + "name": "_nextBucketIndex != _currentBucketIndex", + "source_mapping": { + "start": 3971, + "length": 39, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 96 + ], + "starting_column": 13, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "preCheck", + "source_mapping": { + "start": 3551, + "length": 1277, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerAllUsersPerPeriod", + "source_mapping": { + "start": 1479, + "length": 6866, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "preCheck(address,uint256)" + } + } + } + }, + { + "type": "node", + "name": "_minBucketResetIndex < _nextBucketIndex", + "source_mapping": { + "start": 4180, + "length": 39, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 100 + ], + "starting_column": 24, + "ending_column": 63 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "preCheck", + "source_mapping": { + "start": 3551, + "length": 1277, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerAllUsersPerPeriod", + "source_mapping": { + "start": 1479, + "length": 6866, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "preCheck(address,uint256)" + } + } + } } - } - } - }, - { - "type": "node", - "name": "require(bool,string)(_startTimestamp > (block.timestamp - (24 * 2 * 60 * 60)),Start timestamp can't be more than 2 days in the past)", - "source_mapping": { - "start": 1807, - "length": 122, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [52], - "starting_column": 9, - "ending_column": 131 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "constructor", - "source_mapping": { - "start": 1568, - "length": 783, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "constructor(IERC20,IExitQueue,uint256,uint256)" + ], + "description": "TempleCircuitBreakerAllUsersPerPeriod.preCheck(address,uint256) (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#89-117) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _nextBucketIndex != _currentBucketIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#96)\n\t- _minBucketResetIndex < _nextBucketIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#100)\n", + "markdown": "[TempleCircuitBreakerAllUsersPerPeriod.preCheck(address,uint256)](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L89-L117) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_nextBucketIndex != _currentBucketIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L96)\n\t- [_minBucketResetIndex < _nextBucketIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L100)\n", + "first_markdown_element": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L89-L117", + "id": "080fc01692d6234533b35c64ebb6efb9506e8defa98bc2809f7c873c4c084550", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_getMinBucketResetIndex", + "source_mapping": { + "start": 5647, + "length": 406, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143, + 144, + 145 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerAllUsersPerPeriod", + "source_mapping": { + "start": 1479, + "length": 6866, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getMinBucketResetIndex(uint32,uint32,uint32)" + } + }, + { + "type": "node", + "name": "_currentBucketIndex < _oneperiodDurationAgoIndex", + "source_mapping": { + "start": 5915, + "length": 121, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 143 + ], + "starting_column": 13, + "ending_column": 134 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_getMinBucketResetIndex", + "source_mapping": { + "start": 5647, + "length": 406, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143, + 144, + 145 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerAllUsersPerPeriod", + "source_mapping": { + "start": 1479, + "length": 6866, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "_getMinBucketResetIndex(uint32,uint32,uint32)" + } + } + } } - } - } - } - ], - "description": "TempleStaking.constructor(IERC20,IExitQueue,uint256,uint256) (contracts/deprecated/TempleStaking.sol#45-64) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(_startTimestamp < block.timestamp,Start timestamp must be in the past) (contracts/deprecated/TempleStaking.sol#51)\n\t- require(bool,string)(_startTimestamp > (block.timestamp - (24 * 2 * 60 * 60)),Start timestamp can't be more than 2 days in the past) (contracts/deprecated/TempleStaking.sol#52)\n", - "markdown": "[TempleStaking.constructor(IERC20,IExitQueue,uint256,uint256)](contracts/deprecated/TempleStaking.sol#L45-L64) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(_startTimestamp < block.timestamp,Start timestamp must be in the past)](contracts/deprecated/TempleStaking.sol#L51)\n\t- [require(bool,string)(_startTimestamp > (block.timestamp - (24 * 2 * 60 * 60)),Start timestamp can't be more than 2 days in the past)](contracts/deprecated/TempleStaking.sol#L52)\n", - "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L45-L64", - "id": "554e23718b67bc5f2aee502eb1257244b26e204743aa400a021bde5dfdae3375", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_updateAccumulationFactor", - "source_mapping": { - "start": 4050, - "length": 745, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleCircuitBreakerAllUsersPerPeriod._getMinBucketResetIndex(uint32,uint32,uint32) (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#140-145) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _currentBucketIndex < _oneperiodDurationAgoIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#143)\n", + "markdown": "[TempleCircuitBreakerAllUsersPerPeriod._getMinBucketResetIndex(uint32,uint32,uint32)](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L140-L145) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_currentBucketIndex < _oneperiodDurationAgoIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L143)\n", + "first_markdown_element": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L140-L145", + "id": "62847204845cb0c8231dae0ccd651ab847da9f27624c490709e49b40f8c0793c", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "currentUtilisation", + "source_mapping": { + "start": 6152, + "length": 910, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerAllUsersPerPeriod", + "source_mapping": { + "start": 1479, + "length": 6866, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "currentUtilisation()" + } + }, + { + "type": "node", + "name": "_nextBucketIndex != _currentBucketIndex", + "source_mapping": { + "start": 6625, + "length": 39, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 159 + ], + "starting_column": 13, + "ending_column": 52 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "currentUtilisation", + "source_mapping": { + "start": 6152, + "length": 910, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerAllUsersPerPeriod", + "source_mapping": { + "start": 1479, + "length": 6866, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "currentUtilisation()" + } + } + } + }, + { + "type": "node", + "name": "_minBucketResetIndex < _nextBucketIndex", + "source_mapping": { + "start": 6833, + "length": 39, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 162 + ], + "starting_column": 24, + "ending_column": 63 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "currentUtilisation", + "source_mapping": { + "start": 6152, + "length": 910, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleCircuitBreakerAllUsersPerPeriod", + "source_mapping": { + "start": 1479, + "length": 6866, + "filename_relative": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "filename_short": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol", + "is_dependency": false, + "lines": [ + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "currentUtilisation()" + } + } + } } - }, - "signature": "_updateAccumulationFactor()" - } - }, - { - "type": "node", - "name": "_currentEpoch <= lastUpdatedEpoch", - "source_mapping": { - "start": 4429, - "length": 33, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [112], - "starting_column": 13, - "ending_column": 46 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_updateAccumulationFactor", - "source_mapping": { - "start": 4050, - "length": 745, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_updateAccumulationFactor()" + ], + "description": "TempleCircuitBreakerAllUsersPerPeriod.currentUtilisation() (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#150-169) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _nextBucketIndex != _currentBucketIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#159)\n\t- _minBucketResetIndex < _nextBucketIndex (contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#162)\n", + "markdown": "[TempleCircuitBreakerAllUsersPerPeriod.currentUtilisation()](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L150-L169) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_nextBucketIndex != _currentBucketIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L159)\n\t- [_minBucketResetIndex < _nextBucketIndex](contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L162)\n", + "first_markdown_element": "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol#L150-L169", + "id": "824d28da623fc8596a1354a4d1ea1765d521fc6a1fdeae63acbc756dfbc451ed", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "latestDsrBalance", + "source_mapping": { + "start": 4929, + "length": 510, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "latestDsrBalance()" + } + }, + { + "type": "node", + "name": "(block.timestamp > rho)", + "source_mapping": { + "start": 5272, + "length": 109, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 136 + ], + "starting_column": 9, + "ending_column": 118 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "latestDsrBalance", + "source_mapping": { + "start": 4929, + "length": 510, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "latestDsrBalance()" + } + } + } } - } - } - } - ], - "description": "TempleStaking._updateAccumulationFactor() (contracts/deprecated/TempleStaking.sol#105-120) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _currentEpoch <= lastUpdatedEpoch (contracts/deprecated/TempleStaking.sol#112)\n", - "markdown": "[TempleStaking._updateAccumulationFactor()](contracts/deprecated/TempleStaking.sol#L105-L120) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_currentEpoch <= lastUpdatedEpoch](contracts/deprecated/TempleStaking.sol#L112)\n", - "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L105-L120", - "id": "2c34b26cb8045acf51e728be298d8b7511ea225b13e5adb53e7379207bee9ebf", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "relayedSetEndorsementsFor", - "source_mapping": { - "start": 3694, - "length": 758, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [ - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ElderElection", - "source_mapping": { - "start": 908, - "length": 5057, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [ - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "DsrBaseStrategy.latestDsrBalance() (contracts/v2/strategies/DsrBaseStrategy.sol#129-138) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- (block.timestamp > rho) (contracts/v2/strategies/DsrBaseStrategy.sol#136)\n", + "markdown": "[DsrBaseStrategy.latestDsrBalance()](contracts/v2/strategies/DsrBaseStrategy.sol#L129-L138) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [(block.timestamp > rho)](contracts/v2/strategies/DsrBaseStrategy.sol#L136)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L129-L138", + "id": "5d10ceb2f5b13a3f1d386bd3ffb62d9e64d57500eb9ce74496832fa8d54f7c5e", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + }, + { + "type": "node", + "name": "(block.timestamp > pot.rho())", + "source_mapping": { + "start": 5566, + "length": 60, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 142 + ], + "starting_column": 9, + "ending_column": 69 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_checkpointChi", + "source_mapping": { + "start": 5445, + "length": 188, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "DsrBaseStrategy", + "source_mapping": { + "start": 1041, + "length": 11744, + "filename_relative": "contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/strategies/DsrBaseStrategy.sol", + "filename_short": "contracts/v2/strategies/DsrBaseStrategy.sol", + "is_dependency": false, + "lines": [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_checkpointChi()" + } + } + } } - }, - "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" - } - }, - { - "type": "node", - "name": "block.timestamp > req.deadline", - "source_mapping": { - "start": 4147, - "length": 30, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [128], - "starting_column": 13, - "ending_column": 43 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "relayedSetEndorsementsFor", - "source_mapping": { - "start": 3694, - "length": 758, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [ - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ElderElection", - "source_mapping": { - "start": 908, - "length": 5057, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [ - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184 - ], - "starting_column": 1, - "ending_column": 2 - } - }, - "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" + ], + "description": "DsrBaseStrategy._checkpointChi() (contracts/v2/strategies/DsrBaseStrategy.sol#140-143) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- (block.timestamp > pot.rho()) (contracts/v2/strategies/DsrBaseStrategy.sol#142)\n", + "markdown": "[DsrBaseStrategy._checkpointChi()](contracts/v2/strategies/DsrBaseStrategy.sol#L140-L143) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [(block.timestamp > pot.rho())](contracts/v2/strategies/DsrBaseStrategy.sol#L142)\n", + "first_markdown_element": "contracts/v2/strategies/DsrBaseStrategy.sol#L140-L143", + "id": "5cfe72c68305dea88c7c4193956094120fcd3b9c0b3634e1ae80f5a9b13cb40e", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_initDebtTokenCache", + "source_mapping": { + "start": 24259, + "length": 1450, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)" + } + }, + { + "type": "node", + "name": "_timeElapsed > 0", + "source_mapping": { + "start": 25121, + "length": 16, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 641 + ], + "starting_column": 13, + "ending_column": 29 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_initDebtTokenCache", + "source_mapping": { + "start": 24259, + "length": 1450, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)" + } + } + } } - } - } - } - ], - "description": "ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes) (contracts/governance/ElderElection.sol#116-133) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > req.deadline (contracts/governance/ElderElection.sol#128)\n", - "markdown": "[ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)](contracts/governance/ElderElection.sol#L116-L133) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > req.deadline](contracts/governance/ElderElection.sol#L128)\n", - "first_markdown_element": "contracts/governance/ElderElection.sol#L116-L133", - "id": "239671d596cd02628eaf3011f43031162b8fe5ef0e67e790828aa11ea864ca0c", - "check": "timestamp", - "impact": "Low", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "signatureSplit", - "source_mapping": { - "start": 1240, - "length": 959, - "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", - "filename_short": "contracts/v2/safeGuards/SafeForked.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeForked", - "source_mapping": { - "start": 462, - "length": 6708, - "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", - "filename_short": "contracts/v2/safeGuards/SafeForked.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#619-658) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _timeElapsed > 0 (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#641)\n", + "markdown": "[TempleLineOfCredit._initDebtTokenCache(TempleLineOfCredit.DebtTokenCache)](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L619-L658) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_timeElapsed > 0](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L641)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L619-L658", + "id": "1d9fb732d9369c4da234795950c435996e1f5d0b0c4fd71e2ad0007ec6f7558b", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "calculateClaimable", + "source_mapping": { + "start": 1893, + "length": 581, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "calculateClaimable(address)" + } + }, + { + "type": "node", + "name": "claimableAmount + claimed[_address] > allocation[_address]", + "source_mapping": { + "start": 2293, + "length": 58, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 68 + ], + "starting_column": 13, + "ending_column": 71 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "calculateClaimable", + "source_mapping": { + "start": 1893, + "length": 581, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "calculateClaimable(address)" + } + } + } } - }, - "signature": "signatureSplit(bytes,uint256)" - } - }, - { - "type": "node", - "name": "", - "source_mapping": { - "start": 1654, - "length": 539, - "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", - "filename_short": "contracts/v2/safeGuards/SafeForked.sol", - "is_dependency": false, - "lines": [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], - "starting_column": 9, - "ending_column": 10 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "signatureSplit", - "source_mapping": { - "start": 1240, - "length": 959, - "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", - "filename_short": "contracts/v2/safeGuards/SafeForked.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "SafeForked", - "source_mapping": { - "start": 462, - "length": 6708, - "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", - "filename_short": "contracts/v2/safeGuards/SafeForked.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "signatureSplit(bytes,uint256)" + ], + "description": "TempleTeamPayments.calculateClaimable(address) (contracts/admin/TempleTeamPayments.sol#57-72) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- claimableAmount + claimed[_address] > allocation[_address] (contracts/admin/TempleTeamPayments.sol#68)\n", + "markdown": "[TempleTeamPayments.calculateClaimable(address)](contracts/admin/TempleTeamPayments.sol#L57-L72) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [claimableAmount + claimed[_address] > allocation[_address]](contracts/admin/TempleTeamPayments.sol#L68)\n", + "first_markdown_element": "contracts/admin/TempleTeamPayments.sol#L57-L72", + "id": "3c50b29e16f7abe9424e2eb7ddf7dd3a9178954836a5700181e781d6cab69a90", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "claim", + "source_mapping": { + "start": 2480, + "length": 355, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "claim()" + } + }, + { + "type": "node", + "name": "require(bool,string)(claimable > 0,TempleTeamPayments: Member has no TEMPLE to claim)", + "source_mapping": { + "start": 2602, + "length": 75, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 76 + ], + "starting_column": 9, + "ending_column": 84 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "claim", + "source_mapping": { + "start": 2480, + "length": 355, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleTeamPayments", + "source_mapping": { + "start": 247, + "length": 3130, + "filename_relative": "contracts/admin/TempleTeamPayments.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/admin/TempleTeamPayments.sol", + "filename_short": "contracts/admin/TempleTeamPayments.sol", + "is_dependency": false, + "lines": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "claim()" + } + } + } } - } - } - } - ], - "description": "SafeForked.signatureSplit(bytes,uint256) (contracts/v2/safeGuards/SafeForked.sol#22-46) uses assembly\n\t- INLINE ASM (contracts/v2/safeGuards/SafeForked.sol#35-45)\n", - "markdown": "[SafeForked.signatureSplit(bytes,uint256)](contracts/v2/safeGuards/SafeForked.sol#L22-L46) uses assembly\n\t- [INLINE ASM](contracts/v2/safeGuards/SafeForked.sol#L35-L45)\n", - "first_markdown_element": "contracts/v2/safeGuards/SafeForked.sol#L22-L46", - "id": "3ae97a7384e3769435f8b201c1864a124173df742b9300bf25e8a1a702a86371", - "check": "assembly", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "gain", - "source_mapping": { - "start": 925, - "length": 300, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [31, 32, 33, 34, 35, 36, 37], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Faith", - "source_mapping": { - "start": 125, - "length": 1740, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [ - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleTeamPayments.claim() (contracts/admin/TempleTeamPayments.sol#74-81) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(claimable > 0,TempleTeamPayments: Member has no TEMPLE to claim) (contracts/admin/TempleTeamPayments.sol#76)\n", + "markdown": "[TempleTeamPayments.claim()](contracts/admin/TempleTeamPayments.sol#L74-L81) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(claimable > 0,TempleTeamPayments: Member has no TEMPLE to claim)](contracts/admin/TempleTeamPayments.sol#L76)\n", + "first_markdown_element": "contracts/admin/TempleTeamPayments.sol#L74-L81", + "id": "d2cf6a934d99b6df0f4c782f92abbc6344366c44c011b9e95bdc6171398e7715", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 3932, + "length": 543, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)" + } + }, + { + "type": "node", + "name": "require(bool,string)(block.timestamp <= deadline,Vault: expired deadline)", + "source_mapping": { + "start": 4050, + "length": 63, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 101 + ], + "starting_column": 9, + "ending_column": 72 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 3932, + "length": 543, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)" + } + } + } } - }, - "signature": "gain(address,uint112)" - } - }, - { - "type": "node", - "name": "require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith)", - "source_mapping": { - "start": 986, - "length": 80, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [32], - "starting_column": 9, - "ending_column": 89 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "gain", - "source_mapping": { - "start": 925, - "length": 300, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [31, 32, 33, 34, 35, 36, 37], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Faith", - "source_mapping": { - "start": 125, - "length": 1740, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [ - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "gain(address,uint112)" + ], + "description": "Vault.withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32) (contracts/core/Vault.sol#100-110) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(block.timestamp <= deadline,Vault: expired deadline) (contracts/core/Vault.sol#101)\n", + "markdown": "[Vault.withdrawFor(address,uint256,uint256,uint8,bytes32,bytes32)](contracts/core/Vault.sol#L100-L110) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(block.timestamp <= deadline,Vault: expired deadline)](contracts/core/Vault.sol#L101)\n", + "first_markdown_element": "contracts/core/Vault.sol#L100-L110", + "id": "23a917169154350b1f8e103875cf17fe3784896b355e9f9441c8bdfede6fc4a3", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5359, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + }, + { + "type": "node", + "name": "block.timestamp < firstPeriodStartTimestamp", + "source_mapping": { + "start": 5459, + "length": 43, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 141 + ], + "starting_column": 13, + "ending_column": 56 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5359, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } + }, + { + "type": "node", + "name": "inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp", + "source_mapping": { + "start": 5783, + "length": 138, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 147 + ], + "starting_column": 9, + "ending_column": 147 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "inEnterExitWindow", + "source_mapping": { + "start": 5359, + "length": 569, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Vault", + "source_mapping": { + "start": 1161, + "length": 7823, + "filename_relative": "contracts/core/Vault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Vault.sol", + "filename_short": "contracts/core/Vault.sol", + "is_dependency": false, + "lines": [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "inEnterExitWindow()" + } + } + } } - } - } - } - ], - "description": "Faith.gain(address,uint112) (contracts/deprecated/Faith.sol#31-37) compares to a boolean constant:\n\t-require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith) (contracts/deprecated/Faith.sol#32)\n", - "markdown": "[Faith.gain(address,uint112)](contracts/deprecated/Faith.sol#L31-L37) compares to a boolean constant:\n\t-[require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith)](contracts/deprecated/Faith.sol#L32)\n", - "first_markdown_element": "contracts/deprecated/Faith.sol#L31-L37", - "id": "56cf0d358c021f966d8663efb62e81b7ea09bb2bf0bc7a5ba363ebe693c3bf56", - "check": "boolean-equal", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "redeem", - "source_mapping": { - "start": 1231, - "length": 412, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [39, 40, 41, 42, 43, 44, 45, 46, 47, 48], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Faith", - "source_mapping": { - "start": 125, - "length": 1740, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [ - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Vault.inEnterExitWindow() (contracts/core/Vault.sol#140-148) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp < firstPeriodStartTimestamp (contracts/core/Vault.sol#141)\n\t- inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp (contracts/core/Vault.sol#147)\n", + "markdown": "[Vault.inEnterExitWindow()](contracts/core/Vault.sol#L140-L148) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp < firstPeriodStartTimestamp](contracts/core/Vault.sol#L141)\n\t- [inWindow = cycleNumber * periodDuration + firstPeriodStartTimestamp + enterExitWindowDuration + ENTER_EXIT_WINDOW_BUFFER > block.timestamp](contracts/core/Vault.sol#L147)\n", + "first_markdown_element": "contracts/core/Vault.sol#L140-L148", + "id": "1ec8a1ed491ee4363e9d98709e6ea81c368e5197aa117baaec3fb5dca7a37050", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 1642, + "length": 627, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "LockedOGTemple", + "source_mapping": { + "start": 213, + "length": 2143, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256)" + } + }, + { + "type": "node", + "name": "require(bool,string)(lockedEntries[_idx].LockedUntilTimestamp < block.timestamp,Specified entry is still locked)", + "source_mapping": { + "start": 1867, + "length": 120, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 69, + 70, + 71, + 72 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdrawFor", + "source_mapping": { + "start": 1642, + "length": 627, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "LockedOGTemple", + "source_mapping": { + "start": 213, + "length": 2143, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "withdrawFor(address,uint256)" + } + } + } } - }, - "signature": "redeem(address,uint112)" - } - }, - { - "type": "node", - "name": "require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith)", - "source_mapping": { - "start": 1294, - "length": 80, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [40], - "starting_column": 9, - "ending_column": 89 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "redeem", - "source_mapping": { - "start": 1231, - "length": 412, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [39, 40, 41, 42, 43, 44, 45, 46, 47, 48], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Faith", - "source_mapping": { - "start": 125, - "length": 1740, - "filename_relative": "contracts/deprecated/Faith.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", - "filename_short": "contracts/deprecated/Faith.sol", - "is_dependency": false, - "lines": [ - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "redeem(address,uint112)" + ], + "description": "LockedOGTemple.withdrawFor(address,uint256) (contracts/deprecated/LockedOGTemple.sol#62-81) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(lockedEntries[_idx].LockedUntilTimestamp < block.timestamp,Specified entry is still locked) (contracts/deprecated/LockedOGTemple.sol#69-72)\n", + "markdown": "[LockedOGTemple.withdrawFor(address,uint256)](contracts/deprecated/LockedOGTemple.sol#L62-L81) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(lockedEntries[_idx].LockedUntilTimestamp < block.timestamp,Specified entry is still locked)](contracts/deprecated/LockedOGTemple.sol#L69-L72)\n", + "first_markdown_element": "contracts/deprecated/LockedOGTemple.sol#L62-L81", + "id": "87a3b425d06a0ad7aa92a349ed04204eb047ebb07373cbfbcf3ed5aaaf25be67", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1568, + "length": 783, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(IERC20,IExitQueue,uint256,uint256)" + } + }, + { + "type": "node", + "name": "require(bool,string)(_startTimestamp < block.timestamp,Start timestamp must be in the past)", + "source_mapping": { + "start": 1716, + "length": 81, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 51 + ], + "starting_column": 9, + "ending_column": 90 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1568, + "length": 783, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(IERC20,IExitQueue,uint256,uint256)" + } + } + } + }, + { + "type": "node", + "name": "require(bool,string)(_startTimestamp > (block.timestamp - (24 * 2 * 60 * 60)),Start timestamp can't be more than 2 days in the past)", + "source_mapping": { + "start": 1807, + "length": 122, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 52 + ], + "starting_column": 9, + "ending_column": 131 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "constructor", + "source_mapping": { + "start": 1568, + "length": 783, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "constructor(IERC20,IExitQueue,uint256,uint256)" + } + } + } } - } - } - } - ], - "description": "Faith.redeem(address,uint112) (contracts/deprecated/Faith.sol#39-48) compares to a boolean constant:\n\t-require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith) (contracts/deprecated/Faith.sol#40)\n", - "markdown": "[Faith.redeem(address,uint112)](contracts/deprecated/Faith.sol#L39-L48) compares to a boolean constant:\n\t-[require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith)](contracts/deprecated/Faith.sol#L40)\n", - "first_markdown_element": "contracts/deprecated/Faith.sol#L39-L48", - "id": "f752127c3f283f8e0863072b8bdc266223eb3fecc4b64e758a86403628b01ba6", - "check": "boolean-equal", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "batchLiquidate", - "source_mapping": { - "start": 13008, - "length": 1632, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, - 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleStaking.constructor(IERC20,IExitQueue,uint256,uint256) (contracts/deprecated/TempleStaking.sol#45-64) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- require(bool,string)(_startTimestamp < block.timestamp,Start timestamp must be in the past) (contracts/deprecated/TempleStaking.sol#51)\n\t- require(bool,string)(_startTimestamp > (block.timestamp - (24 * 2 * 60 * 60)),Start timestamp can't be more than 2 days in the past) (contracts/deprecated/TempleStaking.sol#52)\n", + "markdown": "[TempleStaking.constructor(IERC20,IExitQueue,uint256,uint256)](contracts/deprecated/TempleStaking.sol#L45-L64) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [require(bool,string)(_startTimestamp < block.timestamp,Start timestamp must be in the past)](contracts/deprecated/TempleStaking.sol#L51)\n\t- [require(bool,string)(_startTimestamp > (block.timestamp - (24 * 2 * 60 * 60)),Start timestamp can't be more than 2 days in the past)](contracts/deprecated/TempleStaking.sol#L52)\n", + "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L45-L64", + "id": "554e23718b67bc5f2aee502eb1257244b26e204743aa400a021bde5dfdae3375", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_updateAccumulationFactor", + "source_mapping": { + "start": 4050, + "length": 745, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_updateAccumulationFactor()" + } + }, + { + "type": "node", + "name": "_currentEpoch <= lastUpdatedEpoch", + "source_mapping": { + "start": 4429, + "length": 33, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 112 + ], + "starting_column": 13, + "ending_column": 46 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_updateAccumulationFactor", + "source_mapping": { + "start": 4050, + "length": 745, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_updateAccumulationFactor()" + } + } + } } - }, - "signature": "batchLiquidate(address[])" - } - }, - { - "type": "node", - "name": "delete allAccountsData[_account]", - "source_mapping": { - "start": 14023, - "length": 32, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [344], - "starting_column": 17, - "ending_column": 49 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "batchLiquidate", - "source_mapping": { - "start": 13008, - "length": 1632, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359 - ], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleLineOfCredit", - "source_mapping": { - "start": 1433, - "length": 31753, - "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", - "is_dependency": false, - "lines": [ - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "batchLiquidate(address[])" + ], + "description": "TempleStaking._updateAccumulationFactor() (contracts/deprecated/TempleStaking.sol#105-120) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- _currentEpoch <= lastUpdatedEpoch (contracts/deprecated/TempleStaking.sol#112)\n", + "markdown": "[TempleStaking._updateAccumulationFactor()](contracts/deprecated/TempleStaking.sol#L105-L120) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [_currentEpoch <= lastUpdatedEpoch](contracts/deprecated/TempleStaking.sol#L112)\n", + "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L105-L120", + "id": "2c34b26cb8045acf51e728be298d8b7511ea225b13e5adb53e7379207bee9ebf", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "relayedSetEndorsementsFor", + "source_mapping": { + "start": 3694, + "length": 758, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 908, + "length": 5057, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" + } + }, + { + "type": "node", + "name": "block.timestamp > req.deadline", + "source_mapping": { + "start": 4147, + "length": 30, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 128 + ], + "starting_column": 13, + "ending_column": 43 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "relayedSetEndorsementsFor", + "source_mapping": { + "start": 3694, + "length": 758, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 908, + "length": 5057, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + }, + "signature": "relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)" + } + } + } } - } - } - } - ], - "description": "TempleLineOfCredit.batchLiquidate(address[]) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#318-359) has costly operations inside a loop:\n\t- delete allAccountsData[_account] (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#344)\n", - "markdown": "[TempleLineOfCredit.batchLiquidate(address[])](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318-L359) has costly operations inside a loop:\n\t- [delete allAccountsData[_account]](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L344)\n", - "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318-L359", - "id": "a95c0c9dfeb348e0fd86f2f14090e1fbee931ec14c7a4d06443de73a63f4c257", - "check": "costly-loop", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes) (contracts/governance/ElderElection.sol#116-133) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- block.timestamp > req.deadline (contracts/governance/ElderElection.sol#128)\n", + "markdown": "[ElderElection.relayedSetEndorsementsFor(ElderElection.EndorsementReq,bytes)](contracts/governance/ElderElection.sol#L116-L133) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [block.timestamp > req.deadline](contracts/governance/ElderElection.sol#L128)\n", + "first_markdown_element": "contracts/governance/ElderElection.sol#L116-L133", + "id": "239671d596cd02628eaf3011f43031162b8fe5ef0e67e790828aa11ea864ca0c", + "check": "timestamp", + "impact": "Low", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "signatureSplit", + "source_mapping": { + "start": 1240, + "length": 959, + "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", + "filename_short": "contracts/v2/safeGuards/SafeForked.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeForked", + "source_mapping": { + "start": 462, + "length": 6708, + "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", + "filename_short": "contracts/v2/safeGuards/SafeForked.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "signatureSplit(bytes,uint256)" + } + }, + { + "type": "node", + "name": "", + "source_mapping": { + "start": 1654, + "length": 539, + "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", + "filename_short": "contracts/v2/safeGuards/SafeForked.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45 + ], + "starting_column": 9, + "ending_column": 10 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "signatureSplit", + "source_mapping": { + "start": 1240, + "length": 959, + "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", + "filename_short": "contracts/v2/safeGuards/SafeForked.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "SafeForked", + "source_mapping": { + "start": 462, + "length": 6708, + "filename_relative": "contracts/v2/safeGuards/SafeForked.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/safeGuards/SafeForked.sol", + "filename_short": "contracts/v2/safeGuards/SafeForked.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "signatureSplit(bytes,uint256)" + } + } + } } - }, - "signature": "_safeTransfer(address,address,uint256)" - } - }, - { - "type": "node", - "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", - "source_mapping": { - "start": 1972, - "length": 91, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [50], - "starting_column": 9, - "ending_column": 100 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "_safeTransfer", - "source_mapping": { - "start": 1892, - "length": 284, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [49, 50, 51, 52], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "_safeTransfer(address,address,uint256)" + ], + "description": "SafeForked.signatureSplit(bytes,uint256) (contracts/v2/safeGuards/SafeForked.sol#22-46) uses assembly\n\t- INLINE ASM (contracts/v2/safeGuards/SafeForked.sol#35-45)\n", + "markdown": "[SafeForked.signatureSplit(bytes,uint256)](contracts/v2/safeGuards/SafeForked.sol#L22-L46) uses assembly\n\t- [INLINE ASM](contracts/v2/safeGuards/SafeForked.sol#L35-L45)\n", + "first_markdown_element": "contracts/v2/safeGuards/SafeForked.sol#L22-L46", + "id": "3ae97a7384e3769435f8b201c1864a124173df742b9300bf25e8a1a702a86371", + "check": "assembly", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "gain", + "source_mapping": { + "start": 925, + "length": 300, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Faith", + "source_mapping": { + "start": 125, + "length": 1740, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "gain(address,uint112)" + } + }, + { + "type": "node", + "name": "require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith)", + "source_mapping": { + "start": 986, + "length": 80, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 32 + ], + "starting_column": 9, + "ending_column": 89 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "gain", + "source_mapping": { + "start": 925, + "length": 300, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 31, + 32, + 33, + 34, + 35, + 36, + 37 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Faith", + "source_mapping": { + "start": 125, + "length": 1740, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "gain(address,uint112)" + } + } + } } - } - } - } - ], - "description": "Low level call in TempleUniswapV2Pair._safeTransfer(address,address,uint256) (contracts/amm/TempleUniswapV2Pair.sol#49-52):\n\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n", - "markdown": "Low level call in [TempleUniswapV2Pair._safeTransfer(address,address,uint256)](contracts/amm/TempleUniswapV2Pair.sol#L49-L52):\n\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L49-L52", - "id": "1f83014450dcc4da7bf1e0bd2a6815416858bcab0fc682471618f34d8d10a334", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 8542, - "length": 336, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [226, 227, 228, 229, 230, 231, 232, 233, 234], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Faith.gain(address,uint112) (contracts/deprecated/Faith.sol#31-37) compares to a boolean constant:\n\t-require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith) (contracts/deprecated/Faith.sol#32)\n", + "markdown": "[Faith.gain(address,uint112)](contracts/deprecated/Faith.sol#L31-L37) compares to a boolean constant:\n\t-[require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith)](contracts/deprecated/Faith.sol#L32)\n", + "first_markdown_element": "contracts/deprecated/Faith.sol#L31-L37", + "id": "56cf0d358c021f966d8663efb62e81b7ea09bb2bf0bc7a5ba363ebe693c3bf56", + "check": "boolean-equal", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "redeem", + "source_mapping": { + "start": 1231, + "length": 412, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Faith", + "source_mapping": { + "start": 125, + "length": 1740, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "redeem(address,uint112)" + } + }, + { + "type": "node", + "name": "require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith)", + "source_mapping": { + "start": 1294, + "length": 80, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 40 + ], + "starting_column": 9, + "ending_column": 89 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "redeem", + "source_mapping": { + "start": 1231, + "length": 412, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Faith", + "source_mapping": { + "start": 125, + "length": 1740, + "filename_relative": "contracts/deprecated/Faith.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/Faith.sol", + "filename_short": "contracts/deprecated/Faith.sol", + "is_dependency": false, + "lines": [ + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "redeem(address,uint112)" + } + } + } } - }, - "signature": "withdraw(address,address,uint256)" - } - }, - { - "type": "node", - "name": "(sent) = address(to).call{value: amount}()", - "source_mapping": { - "start": 8711, - "length": 50, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [229], - "starting_column": 7, - "ending_column": 57 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 8542, - "length": 336, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [226, 227, 228, 229, 230, 231, 232, 233, 234], - "starting_column": 3, - "ending_column": 4 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStableAMMRouter", - "source_mapping": { - "start": 640, - "length": 8240, - "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", - "filename_short": "contracts/amm/TempleStableAMMRouter.sol", - "is_dependency": false, - "lines": [ - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdraw(address,address,uint256)" + ], + "description": "Faith.redeem(address,uint112) (contracts/deprecated/Faith.sol#39-48) compares to a boolean constant:\n\t-require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith) (contracts/deprecated/Faith.sol#40)\n", + "markdown": "[Faith.redeem(address,uint112)](contracts/deprecated/Faith.sol#L39-L48) compares to a boolean constant:\n\t-[require(bool,string)(canManageFaith[msg.sender] == true,Faith: caller cannot manage faith)](contracts/deprecated/Faith.sol#L40)\n", + "first_markdown_element": "contracts/deprecated/Faith.sol#L39-L48", + "id": "f752127c3f283f8e0863072b8bdc266223eb3fecc4b64e758a86403628b01ba6", + "check": "boolean-equal", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "batchLiquidate", + "source_mapping": { + "start": 13008, + "length": 1632, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "batchLiquidate(address[])" + } + }, + { + "type": "node", + "name": "delete allAccountsData[_account]", + "source_mapping": { + "start": 14023, + "length": 32, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 344 + ], + "starting_column": 17, + "ending_column": 49 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "batchLiquidate", + "source_mapping": { + "start": 13008, + "length": 1632, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleLineOfCredit", + "source_mapping": { + "start": 1433, + "length": 31753, + "filename_relative": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "filename_short": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol", + "is_dependency": false, + "lines": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 781, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 794, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 813, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 826, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 845, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 858, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 877, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "batchLiquidate(address[])" + } + } + } } - } - } - } - ], - "description": "Low level call in TempleStableAMMRouter.withdraw(address,address,uint256) (contracts/amm/TempleStableAMMRouter.sol#226-234):\n\t- (sent) = address(to).call{value: amount}() (contracts/amm/TempleStableAMMRouter.sol#229)\n", - "markdown": "Low level call in [TempleStableAMMRouter.withdraw(address,address,uint256)](contracts/amm/TempleStableAMMRouter.sol#L226-L234):\n\t- [(sent) = address(to).call{value: amount}()](contracts/amm/TempleStableAMMRouter.sol#L229)\n", - "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L226-L234", - "id": "31c25a54b1893eb681300419645fdf23efa72a552693e34424292bf43bb1af2e", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 5260, - "length": 373, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [125, 126, 127, 128, 129, 130, 131, 132, 133, 134], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultProxy", - "source_mapping": { - "start": 456, - "length": 5179, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleLineOfCredit.batchLiquidate(address[]) (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#318-359) has costly operations inside a loop:\n\t- delete allAccountsData[_account] (contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#344)\n", + "markdown": "[TempleLineOfCredit.batchLiquidate(address[])](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318-L359) has costly operations inside a loop:\n\t- [delete allAccountsData[_account]](contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L344)\n", + "first_markdown_element": "contracts/v2/templeLineOfCredit/TempleLineOfCredit.sol#L318-L359", + "id": "a95c0c9dfeb348e0fd86f2f14090e1fbee931ec14c7a4d06443de73a63f4c257", + "check": "costly-loop", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [ + { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + }, + { + "type": "node", + "name": "(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))", + "source_mapping": { + "start": 1972, + "length": 91, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 50 + ], + "starting_column": 9, + "ending_column": 100 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "_safeTransfer", + "source_mapping": { + "start": 1892, + "length": 284, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 49, + 50, + 51, + 52 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "_safeTransfer(address,address,uint256)" + } + } + } } - }, - "signature": "withdraw(address,address,uint256)" - } - }, - { - "type": "node", - "name": "(sent) = address(to).call{value: amount}()", - "source_mapping": { - "start": 5444, - "length": 50, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [129], - "starting_column": 13, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 5260, - "length": 373, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [125, 126, 127, 128, 129, 130, 131, 132, 133, 134], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultProxy", - "source_mapping": { - "start": 456, - "length": 5179, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdraw(address,address,uint256)" + ], + "description": "Low level call in TempleUniswapV2Pair._safeTransfer(address,address,uint256) (contracts/amm/TempleUniswapV2Pair.sol#49-52):\n\t- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/amm/TempleUniswapV2Pair.sol#50)\n", + "markdown": "Low level call in [TempleUniswapV2Pair._safeTransfer(address,address,uint256)](contracts/amm/TempleUniswapV2Pair.sol#L49-L52):\n\t- [(success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value))](contracts/amm/TempleUniswapV2Pair.sol#L50)\n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L49-L52", + "id": "1f83014450dcc4da7bf1e0bd2a6815416858bcab0fc682471618f34d8d10a334", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 8542, + "length": 336, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdraw(address,address,uint256)" + } + }, + { + "type": "node", + "name": "(sent) = address(to).call{value: amount}()", + "source_mapping": { + "start": 8711, + "length": 50, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 229 + ], + "starting_column": 7, + "ending_column": 57 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 8542, + "length": 336, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234 + ], + "starting_column": 3, + "ending_column": 4 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStableAMMRouter", + "source_mapping": { + "start": 640, + "length": 8240, + "filename_relative": "contracts/amm/TempleStableAMMRouter.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleStableAMMRouter.sol", + "filename_short": "contracts/amm/TempleStableAMMRouter.sol", + "is_dependency": false, + "lines": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdraw(address,address,uint256)" + } + } + } } - } - } - } - ], - "description": "Low level call in VaultProxy.withdraw(address,address,uint256) (contracts/core/VaultProxy.sol#125-134):\n\t- (sent) = address(to).call{value: amount}() (contracts/core/VaultProxy.sol#129)\n", - "markdown": "Low level call in [VaultProxy.withdraw(address,address,uint256)](contracts/core/VaultProxy.sol#L125-L134):\n\t- [(sent) = address(to).call{value: amount}()](contracts/core/VaultProxy.sol#L129)\n", - "first_markdown_element": "contracts/core/VaultProxy.sol#L125-L134", - "id": "3d550ecf3771642959a4477b9b2513d6dc53937fd56c14ca08ff22edc5711aa2", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 1837, - "length": 373, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [52, 53, 54, 55, 56, 57, 58, 59, 60, 61], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultedTemple", - "source_mapping": { - "start": 1207, - "length": 1005, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [ - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Low level call in TempleStableAMMRouter.withdraw(address,address,uint256) (contracts/amm/TempleStableAMMRouter.sol#226-234):\n\t- (sent) = address(to).call{value: amount}() (contracts/amm/TempleStableAMMRouter.sol#229)\n", + "markdown": "Low level call in [TempleStableAMMRouter.withdraw(address,address,uint256)](contracts/amm/TempleStableAMMRouter.sol#L226-L234):\n\t- [(sent) = address(to).call{value: amount}()](contracts/amm/TempleStableAMMRouter.sol#L229)\n", + "first_markdown_element": "contracts/amm/TempleStableAMMRouter.sol#L226-L234", + "id": "31c25a54b1893eb681300419645fdf23efa72a552693e34424292bf43bb1af2e", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 5260, + "length": 373, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultProxy", + "source_mapping": { + "start": 456, + "length": 5179, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdraw(address,address,uint256)" + } + }, + { + "type": "node", + "name": "(sent) = address(to).call{value: amount}()", + "source_mapping": { + "start": 5444, + "length": 50, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 129 + ], + "starting_column": 13, + "ending_column": 63 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 5260, + "length": 373, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultProxy", + "source_mapping": { + "start": 456, + "length": 5179, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdraw(address,address,uint256)" + } + } + } } - }, - "signature": "withdraw(address,address,uint256)" - } - }, - { - "type": "node", - "name": "(sent) = address(to).call{value: amount}()", - "source_mapping": { - "start": 2021, - "length": 50, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [56], - "starting_column": 13, - "ending_column": 63 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "withdraw", - "source_mapping": { - "start": 1837, - "length": 373, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [52, 53, 54, 55, 56, 57, 58, 59, 60, 61], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultedTemple", - "source_mapping": { - "start": 1207, - "length": 1005, - "filename_relative": "contracts/core/VaultedTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", - "filename_short": "contracts/core/VaultedTemple.sol", - "is_dependency": false, - "lines": [ - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "withdraw(address,address,uint256)" + ], + "description": "Low level call in VaultProxy.withdraw(address,address,uint256) (contracts/core/VaultProxy.sol#125-134):\n\t- (sent) = address(to).call{value: amount}() (contracts/core/VaultProxy.sol#129)\n", + "markdown": "Low level call in [VaultProxy.withdraw(address,address,uint256)](contracts/core/VaultProxy.sol#L125-L134):\n\t- [(sent) = address(to).call{value: amount}()](contracts/core/VaultProxy.sol#L129)\n", + "first_markdown_element": "contracts/core/VaultProxy.sol#L125-L134", + "id": "3d550ecf3771642959a4477b9b2513d6dc53937fd56c14ca08ff22edc5711aa2", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 1837, + "length": 373, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultedTemple", + "source_mapping": { + "start": 1207, + "length": 1005, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdraw(address,address,uint256)" + } + }, + { + "type": "node", + "name": "(sent) = address(to).call{value: amount}()", + "source_mapping": { + "start": 2021, + "length": 50, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 56 + ], + "starting_column": 13, + "ending_column": 63 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "withdraw", + "source_mapping": { + "start": 1837, + "length": 373, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultedTemple", + "source_mapping": { + "start": 1207, + "length": 1005, + "filename_relative": "contracts/core/VaultedTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultedTemple.sol", + "filename_short": "contracts/core/VaultedTemple.sol", + "is_dependency": false, + "lines": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "withdraw(address,address,uint256)" + } + } + } } - } - } - } - ], - "description": "Low level call in VaultedTemple.withdraw(address,address,uint256) (contracts/core/VaultedTemple.sol#52-61):\n\t- (sent) = address(to).call{value: amount}() (contracts/core/VaultedTemple.sol#56)\n", - "markdown": "Low level call in [VaultedTemple.withdraw(address,address,uint256)](contracts/core/VaultedTemple.sol#L52-L61):\n\t- [(sent) = address(to).call{value: amount}()](contracts/core/VaultedTemple.sol#L56)\n", - "first_markdown_element": "contracts/core/VaultedTemple.sol#L52-L61", - "id": "5cd237239261e23b4d84e1d8b374d18ba70d3249244b864e26e6ac2973377434", - "check": "low-level-calls", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "node", - "name": "_exiter", - "source_mapping": { - "start": 939, - "length": 7, - "filename_relative": "contracts/deprecated/InstantExitQueue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", - "filename_short": "contracts/deprecated/InstantExitQueue.sol", - "is_dependency": false, - "lines": [28], - "starting_column": 13, - "ending_column": 20 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "join", - "source_mapping": { - "start": 769, - "length": 278, - "filename_relative": "contracts/deprecated/InstantExitQueue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", - "filename_short": "contracts/deprecated/InstantExitQueue.sol", - "is_dependency": false, - "lines": [25, 26, 27, 28, 29, 30, 31], - "starting_column": 5, - "ending_column": 6 - }, - "type_specific_fields": { - "parent": { + ], + "description": "Low level call in VaultedTemple.withdraw(address,address,uint256) (contracts/core/VaultedTemple.sol#52-61):\n\t- (sent) = address(to).call{value: amount}() (contracts/core/VaultedTemple.sol#56)\n", + "markdown": "Low level call in [VaultedTemple.withdraw(address,address,uint256)](contracts/core/VaultedTemple.sol#L52-L61):\n\t- [(sent) = address(to).call{value: amount}()](contracts/core/VaultedTemple.sol#L56)\n", + "first_markdown_element": "contracts/core/VaultedTemple.sol#L52-L61", + "id": "5cd237239261e23b4d84e1d8b374d18ba70d3249244b864e26e6ac2973377434", + "check": "low-level-calls", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "node", + "name": "_exiter", + "source_mapping": { + "start": 939, + "length": 7, + "filename_relative": "contracts/deprecated/InstantExitQueue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", + "filename_short": "contracts/deprecated/InstantExitQueue.sol", + "is_dependency": false, + "lines": [ + 28 + ], + "starting_column": 13, + "ending_column": 20 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "join", + "source_mapping": { + "start": 769, + "length": 278, + "filename_relative": "contracts/deprecated/InstantExitQueue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", + "filename_short": "contracts/deprecated/InstantExitQueue.sol", + "is_dependency": false, + "lines": [ + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ], + "starting_column": 5, + "ending_column": 6 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "InstantExitQueue", + "source_mapping": { + "start": 428, + "length": 621, + "filename_relative": "contracts/deprecated/InstantExitQueue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", + "filename_short": "contracts/deprecated/InstantExitQueue.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "join(address,uint256)" + } + } + } + }, + { "type": "contract", "name": "InstantExitQueue", "source_mapping": { - "start": 428, - "length": 621, - "filename_relative": "contracts/deprecated/InstantExitQueue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", - "filename_short": "contracts/deprecated/InstantExitQueue.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "join(address,uint256)" + "start": 428, + "length": 621, + "filename_relative": "contracts/deprecated/InstantExitQueue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", + "filename_short": "contracts/deprecated/InstantExitQueue.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33 + ], + "starting_column": 1, + "ending_column": 0 + } } - } - } - }, - { - "type": "contract", - "name": "InstantExitQueue", - "source_mapping": { - "start": 428, - "length": 621, - "filename_relative": "contracts/deprecated/InstantExitQueue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", - "filename_short": "contracts/deprecated/InstantExitQueue.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33 - ], - "starting_column": 1, - "ending_column": 0 - } - } - ], - "description": "Redundant expression \"_exiter (contracts/deprecated/InstantExitQueue.sol#28)\" inInstantExitQueue (contracts/deprecated/InstantExitQueue.sol#13-33)\n", - "markdown": "Redundant expression \"[_exiter](contracts/deprecated/InstantExitQueue.sol#L28)\" in[InstantExitQueue](contracts/deprecated/InstantExitQueue.sol#L13-L33)\n", - "first_markdown_element": "contracts/deprecated/InstantExitQueue.sol#L28", - "id": "bc002bdc55bb3f699dc53c1f22497f6cd18058776cfe20cd708e317247a68278", - "check": "redundant-statements", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "function", - "name": "slitherConstructorConstantVariables", - "source_mapping": { - "start": 456, - "length": 5179, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136 - ], - "starting_column": 1, - "ending_column": 0 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "VaultProxy", - "source_mapping": { - "start": 456, - "length": 5179, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Redundant expression \"_exiter (contracts/deprecated/InstantExitQueue.sol#28)\" inInstantExitQueue (contracts/deprecated/InstantExitQueue.sol#13-33)\n", + "markdown": "Redundant expression \"[_exiter](contracts/deprecated/InstantExitQueue.sol#L28)\" in[InstantExitQueue](contracts/deprecated/InstantExitQueue.sol#L13-L33)\n", + "first_markdown_element": "contracts/deprecated/InstantExitQueue.sol#L28", + "id": "bc002bdc55bb3f699dc53c1f22497f6cd18058776cfe20cd708e317247a68278", + "check": "redundant-statements", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "function", + "name": "slitherConstructorConstantVariables", + "source_mapping": { + "start": 456, + "length": 5179, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 1, + "ending_column": 0 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultProxy", + "source_mapping": { + "start": 456, + "length": 5179, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "slitherConstructorConstantVariables()" + } + }, + { + "type": "node", + "name": "TA_MULT = 0x40004000000000000000000000000000", + "source_mapping": { + "start": 1175, + "length": 69, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 39 + ], + "starting_column": 5, + "ending_column": 74 + }, + "type_specific_fields": { + "parent": { + "type": "function", + "name": "slitherConstructorConstantVariables", + "source_mapping": { + "start": 456, + "length": 5179, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 1, + "ending_column": 0 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "VaultProxy", + "source_mapping": { + "start": 456, + "length": 5179, + "filename_relative": "contracts/core/VaultProxy.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", + "filename_short": "contracts/core/VaultProxy.sol", + "is_dependency": false, + "lines": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "slitherConstructorConstantVariables()" + } + } + } } - }, - "signature": "slitherConstructorConstantVariables()" - } - }, - { - "type": "node", - "name": "TA_MULT = 0x40004000000000000000000000000000", - "source_mapping": { - "start": 1175, - "length": 69, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [39], - "starting_column": 5, - "ending_column": 74 - }, - "type_specific_fields": { - "parent": { - "type": "function", - "name": "slitherConstructorConstantVariables", - "source_mapping": { - "start": 456, - "length": 5179, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136 - ], - "starting_column": 1, - "ending_column": 0 - }, - "type_specific_fields": { - "parent": { + ], + "description": "VaultProxy.slitherConstructorConstantVariables() (contracts/core/VaultProxy.sol#16-136) uses literals with too many digits:\n\t- TA_MULT = 0x40004000000000000000000000000000 (contracts/core/VaultProxy.sol#39)\n", + "markdown": "[VaultProxy.slitherConstructorConstantVariables()](contracts/core/VaultProxy.sol#L16-L136) uses literals with too many digits:\n\t- [TA_MULT = 0x40004000000000000000000000000000](contracts/core/VaultProxy.sol#L39)\n", + "first_markdown_element": "contracts/core/VaultProxy.sol#L16-L136", + "id": "7f742f5495267be1c67e31f98c8c85491fab9710c070a2223905e20c3fc5efed", + "check": "too-many-digits", + "impact": "Informational", + "confidence": "Medium" + }, + { + "elements": [ + { "type": "contract", - "name": "VaultProxy", - "source_mapping": { - "start": 456, - "length": 5179, - "filename_relative": "contracts/core/VaultProxy.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/VaultProxy.sol", - "filename_short": "contracts/core/VaultProxy.sol", - "is_dependency": false, - "lines": [ - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "slitherConstructorConstantVariables()" - } - } - } - } - ], - "description": "VaultProxy.slitherConstructorConstantVariables() (contracts/core/VaultProxy.sol#16-136) uses literals with too many digits:\n\t- TA_MULT = 0x40004000000000000000000000000000 (contracts/core/VaultProxy.sol#39)\n", - "markdown": "[VaultProxy.slitherConstructorConstantVariables()](contracts/core/VaultProxy.sol#L16-L136) uses literals with too many digits:\n\t- [TA_MULT = 0x40004000000000000000000000000000](contracts/core/VaultProxy.sol#L39)\n", - "first_markdown_element": "contracts/core/VaultProxy.sol#L16-L136", - "id": "7f742f5495267be1c67e31f98c8c85491fab9710c070a2223905e20c3fc5efed", - "check": "too-many-digits", - "impact": "Informational", - "confidence": "Medium" - }, - { - "elements": [ - { - "type": "contract", - "name": "TreasuryReservesVault", - "source_mapping": { - "start": 2150, - "length": 32023, - "filename_relative": "contracts/v2/TreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", - "filename_short": "contracts/v2/TreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, - 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, - 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, - 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, - 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, - 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, - 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, - 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, - 774, 775, 776, 777, 778, 779 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - { - "type": "function", - "name": "borrowTokens", - "source_mapping": { - "start": 6801, - "length": 232, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [165, 166, 167, 168, 169, 170], - "starting_column": 5, - "ending_column": 7 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ITreasuryReservesVault", - "source_mapping": { - "start": 1896, - "length": 12436, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357 - ], - "starting_column": 1, - "ending_column": 0 - } - }, - "signature": "borrowTokens(IERC20)" - } - }, - { - "type": "function", - "name": "strategyTokenCredits", - "source_mapping": { - "start": 7440, - "length": 94, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [182], - "starting_column": 5, - "ending_column": 99 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ITreasuryReservesVault", - "source_mapping": { - "start": 1896, - "length": 12436, - "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", - "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", - "is_dependency": false, - "lines": [ - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357 - ], - "starting_column": 1, - "ending_column": 0 + "name": "TreasuryReservesVault", + "source_mapping": { + "start": 2150, + "length": 32023, + "filename_relative": "contracts/v2/TreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/v2/TreasuryReservesVault.sol", + "filename_short": "contracts/v2/TreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 589, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + { + "type": "function", + "name": "borrowTokens", + "source_mapping": { + "start": 6801, + "length": 232, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 165, + 166, + 167, + 168, + 169, + 170 + ], + "starting_column": 5, + "ending_column": 7 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ITreasuryReservesVault", + "source_mapping": { + "start": 1896, + "length": 12436, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "borrowTokens(IERC20)" + } + }, + { + "type": "function", + "name": "strategyTokenCredits", + "source_mapping": { + "start": 7440, + "length": 94, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 182 + ], + "starting_column": 5, + "ending_column": 99 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ITreasuryReservesVault", + "source_mapping": { + "start": 1896, + "length": 12436, + "filename_relative": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/interfaces/v2/ITreasuryReservesVault.sol", + "filename_short": "contracts/interfaces/v2/ITreasuryReservesVault.sol", + "is_dependency": false, + "lines": [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 346, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357 + ], + "starting_column": 1, + "ending_column": 0 + } + }, + "signature": "strategyTokenCredits(address,IERC20)" + } } - }, - "signature": "strategyTokenCredits(address,IERC20)" - } - } - ], - "description": "TreasuryReservesVault (contracts/v2/TreasuryReservesVault.sol#46-779) does not implement functions:\n\t- ITreasuryReservesVault.borrowTokens(IERC20) (contracts/interfaces/v2/ITreasuryReservesVault.sol#165-170)\n\t- ITreasuryReservesVault.strategyTokenCredits(address,IERC20) (contracts/interfaces/v2/ITreasuryReservesVault.sol#182)\n", - "markdown": "[TreasuryReservesVault](contracts/v2/TreasuryReservesVault.sol#L46-L779) does not implement functions:\n\t- [ITreasuryReservesVault.borrowTokens(IERC20)](contracts/interfaces/v2/ITreasuryReservesVault.sol#L165-L170)\n\t- [ITreasuryReservesVault.strategyTokenCredits(address,IERC20)](contracts/interfaces/v2/ITreasuryReservesVault.sol#L182)\n", - "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L46-L779", - "id": "5ca38996b66ca642bbaf28ffb239e4c9ea40cee90fe7623ec08272ca68b3bfd3", - "check": "unimplemented-functions", - "impact": "Informational", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "kLast", - "source_mapping": { - "start": 1237, - "length": 17, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [29], - "starting_column": 5, - "ending_column": 22 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleUniswapV2Pair", - "source_mapping": { - "start": 440, - "length": 8733, - "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", - "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", - "is_dependency": false, - "lines": [ - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TreasuryReservesVault (contracts/v2/TreasuryReservesVault.sol#46-779) does not implement functions:\n\t- ITreasuryReservesVault.borrowTokens(IERC20) (contracts/interfaces/v2/ITreasuryReservesVault.sol#165-170)\n\t- ITreasuryReservesVault.strategyTokenCredits(address,IERC20) (contracts/interfaces/v2/ITreasuryReservesVault.sol#182)\n", + "markdown": "[TreasuryReservesVault](contracts/v2/TreasuryReservesVault.sol#L46-L779) does not implement functions:\n\t- [ITreasuryReservesVault.borrowTokens(IERC20)](contracts/interfaces/v2/ITreasuryReservesVault.sol#L165-L170)\n\t- [ITreasuryReservesVault.strategyTokenCredits(address,IERC20)](contracts/interfaces/v2/ITreasuryReservesVault.sol#L182)\n", + "first_markdown_element": "contracts/v2/TreasuryReservesVault.sol#L46-L779", + "id": "5ca38996b66ca642bbaf28ffb239e4c9ea40cee90fe7623ec08272ca68b3bfd3", + "check": "unimplemented-functions", + "impact": "Informational", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "kLast", + "source_mapping": { + "start": 1237, + "length": 17, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 29 + ], + "starting_column": 5, + "ending_column": 22 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleUniswapV2Pair", + "source_mapping": { + "start": 440, + "length": 8733, + "filename_relative": "contracts/amm/TempleUniswapV2Pair.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/amm/TempleUniswapV2Pair.sol", + "filename_short": "contracts/amm/TempleUniswapV2Pair.sol", + "is_dependency": false, + "lines": [ + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185 + ], + "starting_column": 1, + "ending_column": 0 + } + } + } } - } - } - } - ], - "description": "TempleUniswapV2Pair.kLast (contracts/amm/TempleUniswapV2Pair.sol#29) should be constant \n", - "markdown": "[TempleUniswapV2Pair.kLast](contracts/amm/TempleUniswapV2Pair.sol#L29) should be constant \n", - "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L29", - "id": "67ff6bf1d9c5c18434ceb39e4ad633556104516f983fe5b005c96338bc0a2a06", - "check": "constable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "templars", - "source_mapping": { - "start": 1493, - "length": 23, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [42], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "ElderElection", - "source_mapping": { - "start": 908, - "length": 5057, - "filename_relative": "contracts/governance/ElderElection.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", - "filename_short": "contracts/governance/ElderElection.sol", - "is_dependency": false, - "lines": [ - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "TempleUniswapV2Pair.kLast (contracts/amm/TempleUniswapV2Pair.sol#29) should be constant \n", + "markdown": "[TempleUniswapV2Pair.kLast](contracts/amm/TempleUniswapV2Pair.sol#L29) should be constant \n", + "first_markdown_element": "contracts/amm/TempleUniswapV2Pair.sol#L29", + "id": "67ff6bf1d9c5c18434ceb39e4ad633556104516f983fe5b005c96338bc0a2a06", + "check": "constable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "templars", + "source_mapping": { + "start": 1493, + "length": 23, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 42 + ], + "starting_column": 5, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "ElderElection", + "source_mapping": { + "start": 908, + "length": 5057, + "filename_relative": "contracts/governance/ElderElection.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/ElderElection.sol", + "filename_short": "contracts/governance/ElderElection.sol", + "is_dependency": false, + "lines": [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + } + } } - } - } - } - ], - "description": "ElderElection.templars (contracts/governance/ElderElection.sol#42) should be immutable \n", - "markdown": "[ElderElection.templars](contracts/governance/ElderElection.sol#L42) should be immutable \n", - "first_markdown_element": "contracts/governance/ElderElection.sol#L42", - "id": "4f112a58dcc55f97428327a1a16bf19355d3278600b10377fef728f2183cae43", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "revalToken", - "source_mapping": { - "start": 537, - "length": 24, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [18], - "starting_column": 5, - "ending_column": 29 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "Exposure", - "source_mapping": { - "start": 362, - "length": 3820, - "filename_relative": "contracts/core/Exposure.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", - "filename_short": "contracts/core/Exposure.sol", - "is_dependency": false, - "lines": [ - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "ElderElection.templars (contracts/governance/ElderElection.sol#42) should be immutable \n", + "markdown": "[ElderElection.templars](contracts/governance/ElderElection.sol#L42) should be immutable \n", + "first_markdown_element": "contracts/governance/ElderElection.sol#L42", + "id": "4f112a58dcc55f97428327a1a16bf19355d3278600b10377fef728f2183cae43", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "revalToken", + "source_mapping": { + "start": 537, + "length": 24, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 18 + ], + "starting_column": 5, + "ending_column": 29 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "Exposure", + "source_mapping": { + "start": 362, + "length": 3820, + "filename_relative": "contracts/core/Exposure.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/Exposure.sol", + "filename_short": "contracts/core/Exposure.sol", + "is_dependency": false, + "lines": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143 + ], + "starting_column": 1, + "ending_column": 2 + } + } + } } - } - } - } - ], - "description": "Exposure.revalToken (contracts/core/Exposure.sol#18) should be immutable \n", - "markdown": "[Exposure.revalToken](contracts/core/Exposure.sol#L18) should be immutable \n", - "first_markdown_element": "contracts/core/Exposure.sol#L18", - "id": "fab816826372462b2c7bad3911bbc931e061922f4242f1fbe256896d6a7f0bd0", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "templeStaking", - "source_mapping": { - "start": 474, - "length": 27, - "filename_relative": "contracts/deprecated/InstantExitQueue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", - "filename_short": "contracts/deprecated/InstantExitQueue.sol", - "is_dependency": false, - "lines": [14], - "starting_column": 5, - "ending_column": 32 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "InstantExitQueue", - "source_mapping": { - "start": 428, - "length": 621, - "filename_relative": "contracts/deprecated/InstantExitQueue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", - "filename_short": "contracts/deprecated/InstantExitQueue.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "Exposure.revalToken (contracts/core/Exposure.sol#18) should be immutable \n", + "markdown": "[Exposure.revalToken](contracts/core/Exposure.sol#L18) should be immutable \n", + "first_markdown_element": "contracts/core/Exposure.sol#L18", + "id": "fab816826372462b2c7bad3911bbc931e061922f4242f1fbe256896d6a7f0bd0", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "templeStaking", + "source_mapping": { + "start": 474, + "length": 27, + "filename_relative": "contracts/deprecated/InstantExitQueue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", + "filename_short": "contracts/deprecated/InstantExitQueue.sol", + "is_dependency": false, + "lines": [ + 14 + ], + "starting_column": 5, + "ending_column": 32 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "InstantExitQueue", + "source_mapping": { + "start": 428, + "length": 621, + "filename_relative": "contracts/deprecated/InstantExitQueue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", + "filename_short": "contracts/deprecated/InstantExitQueue.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33 + ], + "starting_column": 1, + "ending_column": 0 + } + } + } } - } - } - } - ], - "description": "InstantExitQueue.templeStaking (contracts/deprecated/InstantExitQueue.sol#14) should be immutable \n", - "markdown": "[InstantExitQueue.templeStaking](contracts/deprecated/InstantExitQueue.sol#L14) should be immutable \n", - "first_markdown_element": "contracts/deprecated/InstantExitQueue.sol#L14", - "id": "9c17309231fa1c961af9992999f416fdbeee227f579c803bca020051827e90fa", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "templeToken", - "source_mapping": { - "start": 507, - "length": 18, - "filename_relative": "contracts/deprecated/InstantExitQueue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", - "filename_short": "contracts/deprecated/InstantExitQueue.sol", - "is_dependency": false, - "lines": [15], - "starting_column": 5, - "ending_column": 23 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "InstantExitQueue", - "source_mapping": { - "start": 428, - "length": 621, - "filename_relative": "contracts/deprecated/InstantExitQueue.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", - "filename_short": "contracts/deprecated/InstantExitQueue.sol", - "is_dependency": false, - "lines": [ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "InstantExitQueue.templeStaking (contracts/deprecated/InstantExitQueue.sol#14) should be immutable \n", + "markdown": "[InstantExitQueue.templeStaking](contracts/deprecated/InstantExitQueue.sol#L14) should be immutable \n", + "first_markdown_element": "contracts/deprecated/InstantExitQueue.sol#L14", + "id": "9c17309231fa1c961af9992999f416fdbeee227f579c803bca020051827e90fa", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "templeToken", + "source_mapping": { + "start": 507, + "length": 18, + "filename_relative": "contracts/deprecated/InstantExitQueue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", + "filename_short": "contracts/deprecated/InstantExitQueue.sol", + "is_dependency": false, + "lines": [ + 15 + ], + "starting_column": 5, + "ending_column": 23 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "InstantExitQueue", + "source_mapping": { + "start": 428, + "length": 621, + "filename_relative": "contracts/deprecated/InstantExitQueue.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/InstantExitQueue.sol", + "filename_short": "contracts/deprecated/InstantExitQueue.sol", + "is_dependency": false, + "lines": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33 + ], + "starting_column": 1, + "ending_column": 0 + } + } + } } - } - } - } - ], - "description": "InstantExitQueue.templeToken (contracts/deprecated/InstantExitQueue.sol#15) should be immutable \n", - "markdown": "[InstantExitQueue.templeToken](contracts/deprecated/InstantExitQueue.sol#L15) should be immutable \n", - "first_markdown_element": "contracts/deprecated/InstantExitQueue.sol#L15", - "id": "4bc8eb857194f43638152c5b33cdff3d00a791cb1e25a7c8b87380568a56432d", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "OG_TEMPLE", - "source_mapping": { - "start": 505, - "length": 25, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [21], - "starting_column": 3, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "LockedOGTemple", - "source_mapping": { - "start": 213, - "length": 2143, - "filename_relative": "contracts/deprecated/LockedOGTemple.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", - "filename_short": "contracts/deprecated/LockedOGTemple.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "InstantExitQueue.templeToken (contracts/deprecated/InstantExitQueue.sol#15) should be immutable \n", + "markdown": "[InstantExitQueue.templeToken](contracts/deprecated/InstantExitQueue.sol#L15) should be immutable \n", + "first_markdown_element": "contracts/deprecated/InstantExitQueue.sol#L15", + "id": "4bc8eb857194f43638152c5b33cdff3d00a791cb1e25a7c8b87380568a56432d", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "OG_TEMPLE", + "source_mapping": { + "start": 505, + "length": 25, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 21 + ], + "starting_column": 3, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "LockedOGTemple", + "source_mapping": { + "start": 213, + "length": 2143, + "filename_relative": "contracts/deprecated/LockedOGTemple.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/LockedOGTemple.sol", + "filename_short": "contracts/deprecated/LockedOGTemple.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86 + ], + "starting_column": 1, + "ending_column": 2 + } + } + } } - } - } - } - ], - "description": "LockedOGTemple.OG_TEMPLE (contracts/deprecated/LockedOGTemple.sol#21) should be immutable \n", - "markdown": "[LockedOGTemple.OG_TEMPLE](contracts/deprecated/LockedOGTemple.sol#L21) should be immutable \n", - "first_markdown_element": "contracts/deprecated/LockedOGTemple.sol#L21", - "id": "4ef3dbbbe39d794c60622b85b93543dac38feb730ac7a27e0fd13946fdf121ed", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "templeExposure", - "source_mapping": { - "start": 680, - "length": 30, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [25], - "starting_column": 5, - "ending_column": 35 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "LockedOGTemple.OG_TEMPLE (contracts/deprecated/LockedOGTemple.sol#21) should be immutable \n", + "markdown": "[LockedOGTemple.OG_TEMPLE](contracts/deprecated/LockedOGTemple.sol#L21) should be immutable \n", + "first_markdown_element": "contracts/deprecated/LockedOGTemple.sol#L21", + "id": "4ef3dbbbe39d794c60622b85b93543dac38feb730ac7a27e0fd13946fdf121ed", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "templeExposure", + "source_mapping": { + "start": 680, + "length": 30, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 25 + ], + "starting_column": 5, + "ending_column": 35 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + } + } } - } - } - } - ], - "description": "OpsManager.templeExposure (contracts/core/OpsManager.sol#25) should be immutable \n", - "markdown": "[OpsManager.templeExposure](contracts/core/OpsManager.sol#L25) should be immutable \n", - "first_markdown_element": "contracts/core/OpsManager.sol#L25", - "id": "75df57aa98c4e43a92acc34886e7c3bded86c7818b0198632aea4bad13a01f1b", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "vaultedTemple", - "source_mapping": { - "start": 716, - "length": 34, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [26], - "starting_column": 5, - "ending_column": 39 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "OpsManager", - "source_mapping": { - "start": 388, - "length": 6435, - "filename_relative": "contracts/core/OpsManager.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", - "filename_short": "contracts/core/OpsManager.sol", - "is_dependency": false, - "lines": [ - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "OpsManager.templeExposure (contracts/core/OpsManager.sol#25) should be immutable \n", + "markdown": "[OpsManager.templeExposure](contracts/core/OpsManager.sol#L25) should be immutable \n", + "first_markdown_element": "contracts/core/OpsManager.sol#L25", + "id": "75df57aa98c4e43a92acc34886e7c3bded86c7818b0198632aea4bad13a01f1b", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "vaultedTemple", + "source_mapping": { + "start": 716, + "length": 34, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 26 + ], + "starting_column": 5, + "ending_column": 39 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "OpsManager", + "source_mapping": { + "start": 388, + "length": 6435, + "filename_relative": "contracts/core/OpsManager.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/core/OpsManager.sol", + "filename_short": "contracts/core/OpsManager.sol", + "is_dependency": false, + "lines": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184 + ], + "starting_column": 1, + "ending_column": 2 + } + } + } } - } - } - } - ], - "description": "OpsManager.vaultedTemple (contracts/core/OpsManager.sol#26) should be immutable \n", - "markdown": "[OpsManager.vaultedTemple](contracts/core/OpsManager.sol#L26) should be immutable \n", - "first_markdown_element": "contracts/core/OpsManager.sol#L26", - "id": "cbfb5aa067eda81c42956084cfc18ece56924d1c25d1e76fb3414db4c2eda665", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "templars", - "source_mapping": { - "start": 501, - "length": 23, - "filename_relative": "contracts/governance/TemplarMetadata.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/TemplarMetadata.sol", - "filename_short": "contracts/governance/TemplarMetadata.sol", - "is_dependency": false, - "lines": [18], - "starting_column": 5, - "ending_column": 28 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TemplarMetadata", - "source_mapping": { - "start": 235, - "length": 990, - "filename_relative": "contracts/governance/TemplarMetadata.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/TemplarMetadata.sol", - "filename_short": "contracts/governance/TemplarMetadata.sol", - "is_dependency": false, - "lines": [ - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41 - ], - "starting_column": 1, - "ending_column": 2 + ], + "description": "OpsManager.vaultedTemple (contracts/core/OpsManager.sol#26) should be immutable \n", + "markdown": "[OpsManager.vaultedTemple](contracts/core/OpsManager.sol#L26) should be immutable \n", + "first_markdown_element": "contracts/core/OpsManager.sol#L26", + "id": "cbfb5aa067eda81c42956084cfc18ece56924d1c25d1e76fb3414db4c2eda665", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "templars", + "source_mapping": { + "start": 501, + "length": 23, + "filename_relative": "contracts/governance/TemplarMetadata.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/TemplarMetadata.sol", + "filename_short": "contracts/governance/TemplarMetadata.sol", + "is_dependency": false, + "lines": [ + 18 + ], + "starting_column": 5, + "ending_column": 28 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TemplarMetadata", + "source_mapping": { + "start": 235, + "length": 990, + "filename_relative": "contracts/governance/TemplarMetadata.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/governance/TemplarMetadata.sol", + "filename_short": "contracts/governance/TemplarMetadata.sol", + "is_dependency": false, + "lines": [ + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41 + ], + "starting_column": 1, + "ending_column": 2 + } + } + } } - } - } - } - ], - "description": "TemplarMetadata.templars (contracts/governance/TemplarMetadata.sol#18) should be immutable \n", - "markdown": "[TemplarMetadata.templars](contracts/governance/TemplarMetadata.sol#L18) should be immutable \n", - "first_markdown_element": "contracts/governance/TemplarMetadata.sol#L18", - "id": "fb75446c00258533d494a740145891e7f243532f7241392f874097ec646f9d9a", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "epochSizeSeconds", - "source_mapping": { - "start": 892, - "length": 31, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [29], - "starting_column": 5, - "ending_column": 36 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TemplarMetadata.templars (contracts/governance/TemplarMetadata.sol#18) should be immutable \n", + "markdown": "[TemplarMetadata.templars](contracts/governance/TemplarMetadata.sol#L18) should be immutable \n", + "first_markdown_element": "contracts/governance/TemplarMetadata.sol#L18", + "id": "fb75446c00258533d494a740145891e7f243532f7241392f874097ec646f9d9a", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "epochSizeSeconds", + "source_mapping": { + "start": 892, + "length": 31, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 29 + ], + "starting_column": 5, + "ending_column": 36 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + } + } } - } - } - } - ], - "description": "TempleStaking.epochSizeSeconds (contracts/deprecated/TempleStaking.sol#29) should be immutable \n", - "markdown": "[TempleStaking.epochSizeSeconds](contracts/deprecated/TempleStaking.sol#L29) should be immutable \n", - "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L29", - "id": "be00f108f3c3750c27e746e72dc5bbd3c6b499ed89e6a88578513a2ba63afa6c", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - }, - { - "elements": [ - { - "type": "variable", - "name": "startTimestamp", - "source_mapping": { - "start": 988, - "length": 29, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [32], - "starting_column": 5, - "ending_column": 34 - }, - "type_specific_fields": { - "parent": { - "type": "contract", - "name": "TempleStaking", - "source_mapping": { - "start": 464, - "length": 6184, - "filename_relative": "contracts/deprecated/TempleStaking.sol", - "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", - "filename_short": "contracts/deprecated/TempleStaking.sol", - "is_dependency": false, - "lines": [ - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163 - ], - "starting_column": 1, - "ending_column": 0 + ], + "description": "TempleStaking.epochSizeSeconds (contracts/deprecated/TempleStaking.sol#29) should be immutable \n", + "markdown": "[TempleStaking.epochSizeSeconds](contracts/deprecated/TempleStaking.sol#L29) should be immutable \n", + "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L29", + "id": "be00f108f3c3750c27e746e72dc5bbd3c6b499ed89e6a88578513a2ba63afa6c", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + }, + { + "elements": [ + { + "type": "variable", + "name": "startTimestamp", + "source_mapping": { + "start": 988, + "length": 29, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 32 + ], + "starting_column": 5, + "ending_column": 34 + }, + "type_specific_fields": { + "parent": { + "type": "contract", + "name": "TempleStaking", + "source_mapping": { + "start": 464, + "length": 6184, + "filename_relative": "contracts/deprecated/TempleStaking.sol", + "filename_absolute": "/Users/frontier/git/temple/protocol/contracts/deprecated/TempleStaking.sol", + "filename_short": "contracts/deprecated/TempleStaking.sol", + "is_dependency": false, + "lines": [ + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163 + ], + "starting_column": 1, + "ending_column": 0 + } + } + } } - } - } - } - ], - "description": "TempleStaking.startTimestamp (contracts/deprecated/TempleStaking.sol#32) should be immutable \n", - "markdown": "[TempleStaking.startTimestamp](contracts/deprecated/TempleStaking.sol#L32) should be immutable \n", - "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L32", - "id": "d9ad00dc4bd11a15963bf64e199c033358a628bcbc86c74eab6172a22306314e", - "check": "immutable-states", - "impact": "Optimization", - "confidence": "High" - } -] + ], + "description": "TempleStaking.startTimestamp (contracts/deprecated/TempleStaking.sol#32) should be immutable \n", + "markdown": "[TempleStaking.startTimestamp](contracts/deprecated/TempleStaking.sol#L32) should be immutable \n", + "first_markdown_element": "contracts/deprecated/TempleStaking.sol#L32", + "id": "d9ad00dc4bd11a15963bf64e199c033358a628bcbc86c74eab6172a22306314e", + "check": "immutable-states", + "impact": "Optimization", + "confidence": "High" + } +] \ No newline at end of file diff --git a/protocol/test/amm_test.ts b/protocol/test/amm_test.ts index acdb639b6..18249192e 100644 --- a/protocol/test/amm_test.ts +++ b/protocol/test/amm_test.ts @@ -83,12 +83,16 @@ describe("AMM", async () => { uniswapRouter = await new UniswapV2Router02NoEth__factory(owner).deploy(uniswapFactory.address, fraxToken.address); // Add liquidity to both AMMs - await templeToken.increaseAllowance(templeRouter.address, toAtto(10000000)); - await fraxToken.increaseAllowance(templeRouter.address, toAtto(10000000)); + await templeToken.approve(templeRouter.address, 0); + await templeToken.approve(templeRouter.address, toAtto(10000000)); + await fraxToken.approve(templeRouter.address, 0); + await fraxToken.approve(templeRouter.address, toAtto(10000000)); await templeRouter.addLiquidity(toAtto(100000), toAtto(1000000), 1, 1, fraxToken.address, await owner.getAddress(), expiryDate()); - await templeToken.increaseAllowance(uniswapRouter.address, toAtto(10000000)); - await fraxToken.increaseAllowance(uniswapRouter.address, toAtto(10000000)); + await templeToken.approve(uniswapRouter.address, 0); + await templeToken.approve(uniswapRouter.address, toAtto(10000000)); + await fraxToken.approve(uniswapRouter.address, 0); + await fraxToken.approve(uniswapRouter.address, toAtto(10000000)); await uniswapRouter.addLiquidity(templeToken.address, fraxToken.address, toAtto(100000), toAtto(1000000), 1, 1, await owner.getAddress(), expiryDate()); uniswapPair = new UniswapV2Pair__factory(owner).attach(await uniswapFactory.getPair(templeToken.address, fraxToken.address)); @@ -243,7 +247,9 @@ describe("AMM", async () => { describe("Update Treasury", async() => { it("non-owner reverts", async () => { - await shouldThrow(templeRouter.connect(alan).setTreasury(await ben.getAddress()), /Ownable: caller is not the owner/); + await expect(templeRouter.connect(alan).setTreasury(await ben.getAddress())) + .to.be.revertedWithCustomError(templeRouter, "OwnableUnauthorizedAccount") + .withArgs(await alan.getAddress()); }); it("updates treasury address properly", async () => { @@ -256,7 +262,9 @@ describe("AMM", async () => { describe("Defend stable", async() => { it("non-owner reverts", async () => { - await shouldThrow(templeRouter.connect(alan).setDefendStable(feiToken.address), /Ownable: caller is not the owner/); + await expect(templeRouter.connect(alan).setDefendStable(feiToken.address)) + .to.be.revertedWithCustomError(templeRouter, "OwnableUnauthorizedAccount") + .withArgs(await alan.getAddress()); }); it("sets correctly", async () => { @@ -268,7 +276,9 @@ describe("AMM", async () => { describe("Add pair ", async() => { it("non-owner reverts", async () => { - await shouldThrow(templeRouter.connect(alan).addPair(feiToken.address, templeRouter.address), /Ownable: caller is not the owner/); + await expect(templeRouter.connect(alan).addPair(feiToken.address, templeRouter.address)) + .to.be.revertedWithCustomError(templeRouter, "OwnableUnauthorizedAccount") + .withArgs(await alan.getAddress()); }); it("sets correctly", async () => { diff --git a/protocol/test/amo/ramos.ts b/protocol/test/amo/ramos.ts index 01525fb30..5fc04f019 100644 --- a/protocol/test/amo/ramos.ts +++ b/protocol/test/amo/ramos.ts @@ -500,7 +500,7 @@ describe("RAMOS", async () => { it("pause/unpause", async () => { await expect(amo.pause()).to.emit(amo, "Paused").withArgs(executorAddress); mineForwardSeconds(10_000); - await expect(amo.rebalanceDownJoin(100, 1)).to.be.revertedWith("Pausable: paused"); + await expect(amo.rebalanceDownJoin(100, 1)).to.be.revertedWithCustomError(amo, "EnforcedPause"); // unpause await expect(amo.unpause()).to.emit(amo, "Unpaused").withArgs(executorAddress); @@ -696,7 +696,7 @@ describe("RAMOS", async () => { await singleSideDepositQuoteToken(toAtto(10_000)); await expect(amo.rebalanceUpJoin(ONE_ETH, 1)).to.be.revertedWithCustomError(poolHelper, "NoRebalanceUp"); await amo.pause(); - await expect(amo.rebalanceUpJoin(ONE_ETH, 1)).to.be.revertedWith("Pausable: paused"); + await expect(amo.rebalanceUpJoin(ONE_ETH, 1)).to.be.revertedWithCustomError(amo, "EnforcedPause"); await amo.unpause(); // single-side withdraw quoteToken to skew price below TPI await singleSideDepositTemple(toAtto(100_000)); @@ -785,7 +785,7 @@ describe("RAMOS", async () => { expect(await amo.treasuryPriceIndex()).to.equal(ethers.utils.parseEther("0.97")); await expect(amo.rebalanceDownExit(ONE_ETH, 1)).to.be.revertedWithCustomError(poolHelper, "NoRebalanceDown"); await amo.pause(); - await expect(amo.rebalanceDownExit(1, 1)).to.be.revertedWith("Pausable: paused"); + await expect(amo.rebalanceDownExit(1, 1)).to.be.revertedWithCustomError(amo, "EnforcedPause"); await amo.unpause(); // skew price above TPI await singleSideDepositQuoteToken(toAtto(200_000)); @@ -900,7 +900,7 @@ describe("RAMOS", async () => { await expect(amo.rebalanceUpExit(0, 0)).to.be.revertedWithCustomError(amo, "ZeroSwapLimit"); await expect(amo.rebalanceUpExit(toAtto(1_000), 1)).to.be.revertedWithCustomError(amo, "AboveCappedAmount"); await amo.pause(); - await expect(amo.rebalanceUpExit(1, 1)).to.be.revertedWith("Pausable: paused"); + await expect(amo.rebalanceUpExit(1, 1)).to.be.revertedWithCustomError(amo, "EnforcedPause"); await amo.unpause(); // add liquidity on-sided to skew price above TPI @@ -1009,7 +1009,7 @@ describe("RAMOS", async () => { await expect(amo.rebalanceDownJoin(0, 0)).to.be.revertedWithCustomError(amo, "ZeroSwapLimit"); await expect(amo.rebalanceDownJoin(toAtto(1_000), 1)).to.be.revertedWithCustomError(amo, "AboveCappedAmount"); await amo.pause(); - await expect(amo.rebalanceDownJoin(1, 1)).to.be.revertedWith("Pausable: paused"); + await expect(amo.rebalanceDownJoin(1, 1)).to.be.revertedWithCustomError(amo, "EnforcedPause"); await amo.unpause(); // add single-side liquidity to skew price below TPI diff --git a/protocol/test/core/exposure-tests.ts b/protocol/test/core/exposure-tests.ts index 232dae3fa..f31ca000b 100644 --- a/protocol/test/core/exposure-tests.ts +++ b/protocol/test/core/exposure-tests.ts @@ -43,12 +43,12 @@ describe("Temple Core Exposures", async () => { it("Only owner can set/change liquidator", async () => { await expect(exposure.connect(alan).setLiqidator(NULL_ADDR)) - .to.revertedWith("Ownable: caller is not the owner"); + .to.revertedWithCustomError(exposure, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); }) it("Only owner can set/change minter state", async () => { await expect(exposure.connect(alan).setMinterState(await ben.getAddress(), true)) - .to.revertedWith("Ownable: caller is not the owner"); + .to.revertedWithCustomError(exposure, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); expect(await exposure.canMint(await ben.getAddress())).eq(false); await exposure.setMinterState(await ben.getAddress(), true) @@ -56,8 +56,8 @@ describe("Temple Core Exposures", async () => { }) it("Only exposure balance holders can redeem", async () => { - await expect(exposure.connect(alan).redeemAmount(1, await alan.getAddress())) - .to.revertedWith("ERC20: burn amount exceeds balance") + await expect(exposure.connect(alan).redeemAmount(1, await alan.getAddress())). + to.be.revertedWithCustomError(exposure, "ERC20InsufficientBalance"); }) it("No liquidator by default (Event fired and tracked/handled manually)", async () => { diff --git a/protocol/test/core/farming-revenue-tests.ts b/protocol/test/core/farming-revenue-tests.ts index 13deaec55..121c896f2 100644 --- a/protocol/test/core/farming-revenue-tests.ts +++ b/protocol/test/core/farming-revenue-tests.ts @@ -34,15 +34,15 @@ describe("Temple Core Farming Revenue Allocation", async () => { it("Only owner can add revenue", async () => { await expect(farmingRevenue.connect(alan).addRevenue(toAtto(100))) - .to.revertedWith("Ownable: caller is not the owner"); + .to.be.revertedWithCustomError(farmingRevenue, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); }) it("Only owner can change an accounts share of farming revenue", async () => { await expect(farmingRevenue.connect(alan).increaseShares(await alan.getAddress(), toAtto(100))) - .to.revertedWith("Ownable: caller is not the owner"); + .to.be.revertedWithCustomError(farmingRevenue, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); await expect(farmingRevenue.connect(alan).decreaseShares(await alan.getAddress(), toAtto(100))) - .to.revertedWith("Ownable: caller is not the owner"); + .to.be.revertedWithCustomError(farmingRevenue, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); }) describe("Revenue is distributed to various accounts by increasing their exposure", async () => { diff --git a/protocol/test/core/ops-manager-tests.ts b/protocol/test/core/ops-manager-tests.ts index 819756285..fa0d436df 100644 --- a/protocol/test/core/ops-manager-tests.ts +++ b/protocol/test/core/ops-manager-tests.ts @@ -180,7 +180,7 @@ describe("Temple Core Ops Manager", async () => { expect(await exposure.owner()).equals(opsManager.address); const vault = new Vault__factory(owner).attach(vault1Addr); - await templeToken.increaseAllowance(vault.address, toAtto(10000)); + await templeToken.approve(vault.address, toAtto(10000)); await vault.deposit(toAtto(1000)); const ENTER_EXIT_BUFFER = (await vault.ENTER_EXIT_WINDOW_BUFFER()).toNumber(); await mineForwardSeconds(3600+ENTER_EXIT_BUFFER) @@ -208,7 +208,8 @@ describe("Temple Core Ops Manager", async () => { const noopLiquidator = await new NoopVaultedTempleLiquidator__factory(owner).deploy(templeToken.address, await opsManager.vaultedTemple()); const exposure = new Exposure__factory(owner).attach(fxsExposureAddr); - expect(exposure.setLiqidator(noopLiquidator.address)).to.be.revertedWith("Owner: Caller is not the owner"); + expect(exposure.setLiqidator(noopLiquidator.address)) + .to.be.revertedWithCustomError(exposure, "OwnableUnauthorizedAccount").withArgs(await owner.getAddress()); await opsManager.setExposureLiquidator(fxsToken.address, noopLiquidator.address); expect(await exposure.liquidator()).equals(noopLiquidator.address); }) @@ -218,7 +219,7 @@ describe("Temple Core Ops Manager", async () => { templeToken.mint(vaultedTemple.address, toAtto(100)); await expect(vaultedTemple.connect(alan).withdraw(templeToken.address, await alan.getAddress(), toAtto(100))) - .to.revertedWith("Ownable: caller is not the owner") + .to.be.revertedWithCustomError(vaultedTemple, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); await expect(async () => vaultedTemple.withdraw(templeToken.address, await owner.getAddress(), toAtto(100))) .to.changeTokenBalance(templeToken, owner, toAtto(100)) @@ -278,11 +279,11 @@ describe("Temple Core Ops Manager", async () => { // Deposit temple into the current open vault // Phase 1 - start of day 0 - await templeTokenAlan.increaseAllowance(vault1Alan.address, toAtto(100000)); + await templeTokenAlan.approve(vault1Alan.address, toAtto(100000)); await vault1Alan.deposit(toAtto(75)); expect(await vault1Alan.balanceOf(alanAddr)).equals(toAtto(75)); - await templeTokenBen.increaseAllowance(vault1Ben.address, toAtto(100000)); + await templeTokenBen.approve(vault1Ben.address, toAtto(100000)); await vault1Ben.deposit(toAtto(25)); expect(await vault1Ben.balanceOf(benAddr)).equals(toAtto(25)); @@ -555,10 +556,10 @@ describe("Temple Core Ops Manager", async () => { }) async function addDepositToVaults(vault: Vault, amountAlan: BigNumber, amountBen: BigNumber) { - await templeToken.connect(alan).increaseAllowance(vault.address, toAtto(100000)); + await templeToken.connect(alan).approve(vault.address, toAtto(100000)); await vault.connect(alan).deposit(amountAlan); - await templeToken.connect(ben).increaseAllowance(vault.address, toAtto(1000000)); + await templeToken.connect(ben).approve(vault.address, toAtto(1000000)); await vault.connect(ben).deposit(amountBen); } }) diff --git a/protocol/test/core/rebasing-erc20-testsuite.ts b/protocol/test/core/rebasing-erc20-testsuite.ts index d7e500908..3037b4aac 100644 --- a/protocol/test/core/rebasing-erc20-testsuite.ts +++ b/protocol/test/core/rebasing-erc20-testsuite.ts @@ -83,7 +83,7 @@ export const mkRebasingERC20TestSuite = (setup: () => Promise { @@ -145,7 +145,7 @@ export const mkRebasingERC20TestSuite = (setup: () => Promise { await templeExposure.setMinterState(vault.address, true); await templeExposure.setMinterState(await owner.getAddress(), true); - await templeToken.connect(alan).increaseAllowance(vault.address, toAtto(1000000)); - await templeToken.connect(ben).increaseAllowance(vault.address, toAtto(1000000)); + await templeToken.connect(alan).approve(vault.address, toAtto(1000000)); + await templeToken.connect(ben).approve(vault.address, toAtto(1000000)); vaultEarlyWithdraw = await new VaultEarlyWithdraw__factory(owner).deploy( templeToken.address, @@ -103,8 +103,8 @@ describe("Temple Core Vault - Early Withdraw", async () => { ); // Approve the early withdraw contract to pull the vault erc20. - await vault.connect(alan).increaseAllowance(vaultEarlyWithdraw.address, toAtto(1000000)); - await vault.connect(ben).increaseAllowance(vaultEarlyWithdraw.address, toAtto(1000000)); + await vault.connect(alan).approve(vaultEarlyWithdraw.address, toAtto(1000000)); + await vault.connect(ben).approve(vaultEarlyWithdraw.address, toAtto(1000000)); // Fund the vaultEarlyWithdraw with temple await templeToken.mint(vaultEarlyWithdraw.address, toAtto(1000000)); @@ -112,11 +112,11 @@ describe("Temple Core Vault - Early Withdraw", async () => { it("only owner can call pause/unpause/recoverToken", async () => { await expect(vaultEarlyWithdraw.connect(alan).pause()) - .to.be.revertedWith("Ownable: caller is not the owner"); + .to.be.revertedWithCustomError(vaultEarlyWithdraw, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); await expect(vaultEarlyWithdraw.connect(alan).unpause()) - .to.be.revertedWith("Ownable: caller is not the owner"); + .to.be.revertedWithCustomError(vaultEarlyWithdraw, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); await expect(vaultEarlyWithdraw.connect(alan).recoverToken(templeToken.address, await owner.getAddress(), toAtto(100))) - .to.be.revertedWith("Ownable: caller is not the owner"); + .to.be.revertedWithCustomError(vaultEarlyWithdraw, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); await expect(vaultEarlyWithdraw.connect(owner).pause()) .to.not.be.reverted; @@ -150,7 +150,7 @@ describe("Temple Core Vault - Early Withdraw", async () => { it("owner can update min withdraw amount", async () => { await expect(vaultEarlyWithdraw.connect(alan).setMinWithdrawAmount(1)) - .to.be.revertedWith("Ownable: caller is not the owner"); + .to.be.revertedWithCustomError(vaultEarlyWithdraw, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); await expect(vaultEarlyWithdraw.connect(owner).setMinWithdrawAmount(1)) .to.emit(vaultEarlyWithdraw, "MinWithdrawAmountSet") @@ -171,7 +171,7 @@ describe("Temple Core Vault - Early Withdraw", async () => { // Fails as there's no $TEMPLE left. await expect(vaultEarlyWithdraw.connect(alan).withdraw(vault.address, toAtto(1))). - to.be.revertedWith("ERC20: transfer amount exceeds balance"); + to.be.revertedWithCustomError(templeToken, "ERC20InsufficientBalance"); }); it("deposit and early withdrawal", async () => { @@ -234,7 +234,7 @@ describe("Temple Core Vault - Early Withdraw", async () => { // Cannot withdraw when paused await expect(vaultEarlyWithdraw.withdraw(vault.address, toAtto(100))) - .to.be.revertedWith("Pausable: paused"); + .to.be.revertedWithCustomError(vaultEarlyWithdraw, "EnforcedPause"); await expect(vaultEarlyWithdraw.unpause()) .to.emit(vaultEarlyWithdraw, "Unpaused") @@ -242,7 +242,7 @@ describe("Temple Core Vault - Early Withdraw", async () => { // Can withdraw when unpaused (and as expected, fails from lack of vaulted balance as no deposits) await expect(vaultEarlyWithdraw.connect(alan).withdraw(vault.address, toAtto(100))) - .to.be.revertedWith("ERC20: transfer amount exceeds balance"); + .to.be.revertedWithCustomError(templeToken, "ERC20InsufficientBalance"); }); it("owner can recover token", async () => { diff --git a/protocol/test/core/vault-proxy-tests.ts b/protocol/test/core/vault-proxy-tests.ts index eae69d5cf..7ee028e6b 100644 --- a/protocol/test/core/vault-proxy-tests.ts +++ b/protocol/test/core/vault-proxy-tests.ts @@ -122,12 +122,12 @@ describe("Vault Proxy", async () => { expect(await TEMPLE.balanceOf(await owner.getAddress())).equals(expectedBal); expect(VAULT_PROXY.connect(alan).withdraw(TEMPLE.address, await alan.getAddress(), toAtto(100))) - .to.be.revertedWith("Ownable: caller is not the owner"); + .to.be.revertedWithCustomError(VAULT_PROXY, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); }) it("Only owner can toggle if faith claims are enabled/disabled", async () => { await expect(VAULT_PROXY.connect(alan).toggleFaithClaimEnabled()) - .to.be.revertedWith("Ownable: caller is not the owner") + .to.be.revertedWithCustomError(VAULT_PROXY, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); expect(await VAULT_PROXY.faithClaimEnabled()).is.true; await VAULT_PROXY.toggleFaithClaimEnabled() @@ -143,7 +143,8 @@ describe("Vault Proxy", async () => { const expectedAmount = await VAULT_PROXY.getFaithMultiplier(faith.usableFaith, alanTempleDeposit); - await TEMPLE.connect(alan).increaseAllowance(VAULT_PROXY.address, toAtto(10000)) + await TEMPLE.connect(alan).approve(VAULT_PROXY.address, 0); + await TEMPLE.connect(alan).approve(VAULT_PROXY.address, toAtto(10000)); await VAULT_PROXY.connect(alan).depositTempleWithFaith(alanTempleDeposit, faith.usableFaith,vault.address); expect(await vault.balanceOf(alanAddr)).equals(expectedAmount); // ensure we've burnt it all @@ -169,7 +170,8 @@ describe("Vault Proxy", async () => { await TEMPLE.mint(await alan.getAddress(), toAtto(data.temple)); await FAITH.gain(await alan.getAddress(), toAtto(data.faith)); - await TEMPLE.connect(alan).increaseAllowance(VAULT_PROXY.address, toAtto(10000)) + await TEMPLE.connect(alan).approve(VAULT_PROXY.address, 0); + await TEMPLE.connect(alan).approve(VAULT_PROXY.address, toAtto(10000)); await VAULT_PROXY.connect(alan).depositTempleWithFaith(toAtto(data.temple), toAtto(data.faith), vault.address); expect(fromAtto(await vault.balanceOf(await alan.getAddress()))).approximately(data.expected, 1e-6); @@ -182,10 +184,12 @@ describe("Vault Proxy", async () => { const alanOgTemple = new OGTemple__factory(alan).attach(OGTEMPLE.address); const alanOGTSwap = new VaultProxy__factory(alan).attach(VAULT_PROXY.address); - await alanTemple.increaseAllowance(STAKING.address, toAtto(100000)); + await alanTemple.approve(STAKING.address, 0); + await alanTemple.approve(STAKING.address, toAtto(100000)); await alanStake.stake(toAtto(200)); mineForwardSeconds(40); // 2 epochs - await alanOgTemple.increaseAllowance(VAULT_PROXY.address, toAtto(10000)) + await alanOgTemple.approve(VAULT_PROXY.address, 0); + await alanOgTemple.approve(VAULT_PROXY.address, toAtto(10000)); const ogtBal = await OGTEMPLE.balanceOf(await alan.getAddress()) const amount = await STAKING.balance(ogtBal); @@ -214,9 +218,11 @@ describe("Vault Proxy", async () => { const alanOgTemple = new OGTemple__factory(alan).attach(OGTEMPLE.address); const alanOGTSwap = new VaultProxy__factory(alan).attach(VAULT_PROXY.address); - await alanTemple.increaseAllowance(STAKING.address, toAtto(100000)); + await alanTemple.approve(STAKING.address, 0); + await alanTemple.approve(STAKING.address, toAtto(100000)); await alanStake.stake(toAtto(200)); - await alanOgTemple.increaseAllowance(VAULT_PROXY.address, toAtto(10000)) + await alanOgTemple.approve(VAULT_PROXY.address, 0); + await alanOgTemple.approve(VAULT_PROXY.address, toAtto(10000)); const ogtBal = await OGTEMPLE.balanceOf(await alan.getAddress()) const amount = await STAKING.balance(ogtBal); @@ -231,7 +237,7 @@ describe("Vault Proxy", async () => { }) it("Can proxy deposit for any Vault", async() => { - await TEMPLE.connect(alan).increaseAllowance(VAULT_PROXY.address, toAtto(1000)); + await TEMPLE.connect(alan).approve(VAULT_PROXY.address, toAtto(1000)); await VAULT_PROXY.connect(alan).depositTempleFor(toAtto(100), vault.address); expect(await vault.balanceOf(await alan.getAddress())).equals(toAtto(100)); diff --git a/protocol/test/core/vault-tests.ts b/protocol/test/core/vault-tests.ts index cf31ca08d..d50fa00fb 100644 --- a/protocol/test/core/vault-tests.ts +++ b/protocol/test/core/vault-tests.ts @@ -90,8 +90,8 @@ describe("Temple Core Vault", async () => { await templeExposure.setMinterState(vault.address, true); await templeExposure.setMinterState(await owner.getAddress(), true); - await templeToken.connect(alan).increaseAllowance(vault.address, toAtto(1000000)); - await templeToken.connect(ben).increaseAllowance(vault.address, toAtto(1000000)); + await templeToken.connect(alan).approve(vault.address, toAtto(1000000)); + await templeToken.connect(ben).approve(vault.address, toAtto(1000000)); }); it("Single stakers deposit (only in the entry/exit window)", async () => { @@ -303,13 +303,13 @@ describe("Temple Core Vault", async () => { it("only vault owner can redeem an exposure", async () => { await expect(vault.connect(alan).redeemExposures([templeExposure.address])) - .to.revertedWith("Ownable: caller is not the owner") + .to.be.revertedWithCustomError(vault, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); }); it("only owner can withdraw vaulted temple (for DAO leverage)", async () => { await expect(vaultedTemple.connect(alan) .withdraw(templeToken.address, await alan.getAddress(), 100)) - .to.revertedWith("Ownable: caller is not the owner") + .to.be.revertedWithCustomError(vaultedTemple, "OwnableUnauthorizedAccount").withArgs(await alan.getAddress()); await templeToken.mint(vaultedTemple.address, 100); diff --git a/protocol/test/elder-election-tests.ts b/protocol/test/elder-election-tests.ts index 33f45b253..a05d0c8b9 100644 --- a/protocol/test/elder-election-tests.ts +++ b/protocol/test/elder-election-tests.ts @@ -9,7 +9,6 @@ import { ElderElection, ElderElection__factory, } from "../typechain"; import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { shouldThrow } from "./helpers"; const DISCORD_ID_1 = 1000; const DISCORD_ID_2 = 1001; @@ -57,7 +56,8 @@ describe("Elder Election", async () => { it("nominations work", async () => { { const election = ELDER_ELECTION.connect(amanda); - await shouldThrow(election.nominate(DISCORD_ID_1), /AccessControl:/); + await expect(election.nominate(DISCORD_ID_1)) + .to.be.revertedWithCustomError(ELDER_ELECTION, "AccessControlUnauthorizedAccount"); } { @@ -76,7 +76,8 @@ describe("Elder Election", async () => { it("resignations work", async () => { { const election = ELDER_ELECTION.connect(amanda); - await shouldThrow(election.resign(DISCORD_ID_1), /AccessControl:/); + await expect(election.resign(DISCORD_ID_1)) + .to.be.revertedWithCustomError(ELDER_ELECTION, "AccessControlUnauthorizedAccount"); } { diff --git a/protocol/test/forge/TempleTest.sol b/protocol/test/forge/TempleTest.sol index 64d4663f7..d03a4a344 100644 --- a/protocol/test/forge/TempleTest.sol +++ b/protocol/test/forge/TempleTest.sol @@ -6,6 +6,7 @@ import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { Test, StdChains } from "forge-std/Test.sol"; import { CommonEventsAndErrors } from "contracts/common/CommonEventsAndErrors.sol"; import { ITempleElevatedAccess } from "contracts/interfaces/v2/access/ITempleElevatedAccess.sol"; +import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; /// @notice A forge test base class which can setup to use a fork, deploy UUPS proxies, etc abstract contract TempleTest is Test { @@ -47,8 +48,7 @@ abstract contract TempleTest is Test { function expectOnlyOwner() internal { vm.startPrank(unauthorizedUser); - vm.expectRevert("Ownable: caller is not the owner"); - vm.stopPrank(); + vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, unauthorizedUser)); } function setExplicitAccess( diff --git a/protocol/test/forge/admin/TempleTeamPaymentsFactory.t.sol b/protocol/test/forge/admin/TempleTeamPaymentsFactory.t.sol index 4da880eb6..f2c4edcae 100644 --- a/protocol/test/forge/admin/TempleTeamPaymentsFactory.t.sol +++ b/protocol/test/forge/admin/TempleTeamPaymentsFactory.t.sol @@ -236,9 +236,7 @@ contract TempleTeamPaymentsFactoryTest is TempleTest { function testCannotInitializeTwice() public { TempleTeamPaymentsV2 testContract = testDeployPayoutsSingle(); - vm.expectRevert( - bytes("Initializable: contract is already initialized") - ); + vm.expectRevert(abi.encodeWithSelector(Initializable.InvalidInitialization.selector)); testContract.initialize(temple); } diff --git a/protocol/test/forge/core/MultiOtcOffer.t.sol b/protocol/test/forge/core/MultiOtcOffer.t.sol index 5fc78ce7c..35ea43fd8 100644 --- a/protocol/test/forge/core/MultiOtcOffer.t.sol +++ b/protocol/test/forge/core/MultiOtcOffer.t.sol @@ -8,6 +8,7 @@ import { OtcOffer } from "contracts/core/OtcOffer.sol"; import { MultiOtcOffer } from "contracts/core/MultiOtcOffer.sol"; import { CommonEventsAndErrors } from "contracts/common/CommonEventsAndErrors.sol"; import { IMultiOtcOffer } from "contracts/interfaces/core/IMultiOtcOffer.sol"; +import { Pausable } from "@openzeppelin/contracts/utils/Pausable.sol"; contract MultiOtcOfferTestBase is TempleTest { MultiOtcOffer public otcOffer; @@ -399,7 +400,6 @@ contract MultiOtcOfferTest is MultiOtcOfferTestBase { bytes32[] memory marketIds = otcOffer.getOtcMarketIds(); assertEq(marketIds.length, 0); - IMultiOtcOffer.MarketTokens memory tokens = otcOffer.getOtcMarketTokens(marketId); assertEq(otcOffer.tokenPairExists(address(usdcToken), address(ohmToken)), false); } @@ -470,7 +470,7 @@ contract MultiOtcOfferTest is MultiOtcOfferTestBase { } vm.prank(alice); - vm.expectRevert("Pausable: paused"); + vm.expectRevert(abi.encodeWithSelector(Pausable.EnforcedPause.selector)); otcOffer.swap(marketId, 100e9); // Unpause diff --git a/protocol/test/forge/core/OtcOffer.t.sol b/protocol/test/forge/core/OtcOffer.t.sol index 12eb0f380..dffe9607c 100644 --- a/protocol/test/forge/core/OtcOffer.t.sol +++ b/protocol/test/forge/core/OtcOffer.t.sol @@ -5,6 +5,7 @@ import { TempleTest } from "../TempleTest.sol"; import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import { OtcOffer } from "contracts/core/OtcOffer.sol"; import { CommonEventsAndErrors } from "contracts/common/CommonEventsAndErrors.sol"; +import { Pausable } from "@openzeppelin/contracts/utils/Pausable.sol"; contract OtcOfferTestBase is TempleTest { // user sells OHM and buys DAI @@ -120,7 +121,7 @@ contract OtcOfferTestAdmin is OtcOfferTestBase { } vm.prank(alice); - vm.expectRevert("Pausable: paused"); + vm.expectRevert(abi.encodeWithSelector(Pausable.EnforcedPause.selector)); otcOfferDaiOhm.swap(100e9); // Unpause diff --git a/protocol/test/forge/v2/strategies/GnosisStrategy.t.sol b/protocol/test/forge/v2/strategies/GnosisStrategy.t.sol index 55491b38a..51d68b2c6 100644 --- a/protocol/test/forge/v2/strategies/GnosisStrategy.t.sol +++ b/protocol/test/forge/v2/strategies/GnosisStrategy.t.sol @@ -12,6 +12,7 @@ import { ITempleStrategy } from "contracts/interfaces/v2/strategies/ITempleStrat import { TreasuryPriceIndexOracle } from "contracts/v2/TreasuryPriceIndexOracle.sol"; import { TempleCircuitBreakerAllUsersPerPeriod } from "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol"; import { TempleCircuitBreakerProxy } from "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol"; +import { IERC20Errors } from "@openzeppelin/contracts/interfaces/draft-IERC6093.sol"; /* solhint-disable func-name-mixedcase */ contract GnosisStrategyTestBase is TempleTest { @@ -368,7 +369,7 @@ contract GnosisStrategyTestBorrowAndRepay is GnosisStrategyTestBase { vm.startPrank(executor); strategy.borrow(dai, borrowAmount); - vm.expectRevert("ERC20: transfer amount exceeds balance"); + vm.expectRevert(abi.encodeWithSelector(IERC20Errors.ERC20InsufficientBalance.selector, address(strategy), 0, repayAmount)); strategy.repay(dai, repayAmount); // The safe needs to send dai to the strategy before repaying. diff --git a/protocol/test/forge/v2/strategies/TempleTokenBaseStrategy.t.sol b/protocol/test/forge/v2/strategies/TempleTokenBaseStrategy.t.sol index 89c3a75ca..52dd123d2 100644 --- a/protocol/test/forge/v2/strategies/TempleTokenBaseStrategy.t.sol +++ b/protocol/test/forge/v2/strategies/TempleTokenBaseStrategy.t.sol @@ -13,6 +13,7 @@ import { ITempleStrategy } from "contracts/interfaces/v2/strategies/ITempleStrat import { TreasuryPriceIndexOracle } from "contracts/v2/TreasuryPriceIndexOracle.sol"; import { TempleCircuitBreakerAllUsersPerPeriod } from "contracts/v2/circuitBreaker/TempleCircuitBreakerAllUsersPerPeriod.sol"; import { TempleCircuitBreakerProxy } from "contracts/v2/circuitBreaker/TempleCircuitBreakerProxy.sol"; +import { IERC20Errors } from "@openzeppelin/contracts/interfaces/draft-IERC6093.sol"; /* solhint-disable func-name-mixedcase, not-rely-on-time */ contract TempleTokenBaseStrategyTestBase is TempleTest { @@ -198,7 +199,7 @@ contract TempleTokenBaseStrategyTrvWithdraw is TempleTokenBaseStrategyTestBase { vm.expectRevert(abi.encodeWithSelector(CommonEventsAndErrors.ExpectedNonZero.selector)); strategy.trvDeposit(0); - vm.expectRevert("ERC20: burn amount exceeds balance"); + vm.expectRevert(abi.encodeWithSelector(IERC20Errors.ERC20InsufficientBalance.selector, address(strategy), 0, 100)); strategy.trvDeposit(100); uint256 amount = 1e18; diff --git a/protocol/test/forge/v2/templeLineOfCredit/TlcBorrow.t.sol b/protocol/test/forge/v2/templeLineOfCredit/TlcBorrow.t.sol index a6a57ef67..a840f8879 100644 --- a/protocol/test/forge/v2/templeLineOfCredit/TlcBorrow.t.sol +++ b/protocol/test/forge/v2/templeLineOfCredit/TlcBorrow.t.sol @@ -217,17 +217,17 @@ contract TempleLineOfCreditTestBorrow is TlcBaseTest { // With unoptmised solc FOUNDRY_PROFILE=lite (uint256 first, uint256 second, uint256 third) = _borrowIteration(makeAddr("acct1")); assertLt(first, 310_500, "acct1 1"); - assertLt(second, 210_800, "acct1 2"); + assertLt(second, 210_812, "acct1 2"); assertLt(third, 241_500, "acct1 3"); (first, second, third) = _borrowIteration(makeAddr("acct2")); - assertLt(first, 247_400, "acct2 1"); + assertLt(first, 247_420, "acct2 1"); assertLt(second, 210_800, "acct2 2"); - assertLt(third, 241_500, "acct2 3"); + assertLt(third, 241_530, "acct2 3"); (first, second, third) = _borrowIteration(makeAddr("acct3")); - assertLt(first, 247_400, "acct3 1"); + assertLt(first, 247_420, "acct3 1"); assertLt(second, 210_800, "acct3 2"); - assertLt(third, 241_400, "acct3 3"); + assertLt(third, 241_530, "acct3 3"); } } \ No newline at end of file diff --git a/protocol/test/forge/v2/templeLineOfCredit/TlcCollateral.t.sol b/protocol/test/forge/v2/templeLineOfCredit/TlcCollateral.t.sol index c796e6caf..06793858f 100644 --- a/protocol/test/forge/v2/templeLineOfCredit/TlcCollateral.t.sol +++ b/protocol/test/forge/v2/templeLineOfCredit/TlcCollateral.t.sol @@ -296,17 +296,17 @@ contract TempleLineOfCreditTest_Collateral is TlcBaseTest { // With unoptmised solc FOUNDRY_PROFILE=lite (uint256 first, uint256 second, uint256 third) = _removeCollateralIteration(makeAddr("acct1")); assertLt(first, 167_500, "acct1 1"); - assertLt(second, 143_000, "acct1 2"); + assertLt(second, 150_322, "acct1 2"); assertLt(third, 142_000, "acct1 3"); (first, second, third) = _removeCollateralIteration(makeAddr("acct2")); assertLt(first, 163_300, "acct2 1"); - assertLt(second, 146_200, "acct2 2"); + assertLt(second, 150_083, "acct2 2"); assertLt(third, 142_000, "acct2 3"); (first, second, third) = _removeCollateralIteration(makeAddr("acct3")); assertLt(first, 163_300, "acct3 1"); - assertLt(second, 146_200, "acct3 2"); + assertLt(second, 150_083, "acct3 2"); assertLt(third, 141_900, "acct3 3"); } } \ No newline at end of file diff --git a/protocol/test/forge/v2/treasuryReservesVault/TrvRepay.t.sol b/protocol/test/forge/v2/treasuryReservesVault/TrvRepay.t.sol index 483daebbc..5545af4fc 100644 --- a/protocol/test/forge/v2/treasuryReservesVault/TrvRepay.t.sol +++ b/protocol/test/forge/v2/treasuryReservesVault/TrvRepay.t.sol @@ -8,6 +8,7 @@ import { ITempleStrategy } from "contracts/interfaces/v2/strategies/ITempleStrat import { TreasuryReservesVaultTestBase } from "./TrvBase.t.sol"; import { stdError } from "forge-std/StdError.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20Errors } from "@openzeppelin/contracts/interfaces/draft-IERC6093.sol"; /* solhint-disable func-name-mixedcase, contract-name-camelcase, not-rely-on-time */ contract TreasuryReservesVaultTestRepay is TreasuryReservesVaultTestBase { @@ -85,7 +86,7 @@ contract TreasuryReservesVaultTestRepay is TreasuryReservesVaultTestBase { // Payee not funded with DAI { vm.startPrank(address(strategy)); - vm.expectRevert("ERC20: transfer amount exceeds balance"); + vm.expectRevert(abi.encodeWithSelector(IERC20Errors.ERC20InsufficientBalance.selector, address(strategy), 0, 5e18)); trv.repay(dai, 5e18, address(strategy)); deal(address(dai), address(strategy), 10e18, true); diff --git a/protocol/test/templar-metadata-tests.ts b/protocol/test/templar-metadata-tests.ts index d9f6b5ac2..ff681ea18 100644 --- a/protocol/test/templar-metadata-tests.ts +++ b/protocol/test/templar-metadata-tests.ts @@ -5,7 +5,6 @@ import { Templar, Templar__factory, TemplarMetadata, TemplarMetadata__factory, } from "../typechain"; -import { shouldThrow } from "./helpers"; const DISCORD_ID_1 = 1000; const DISCORD_ID_2 = 1001; @@ -46,7 +45,8 @@ describe("Templar Metadata", async () => { // Ben cannot { const templarMetadata = TEMPLAR_METADATA.connect(ben); - await shouldThrow(templarMetadata.setRole(DISCORD_ID_1, "acolyte"), /AccessControl:/); + await expect(templarMetadata.setRole(DISCORD_ID_1, "acolyte")) + .to.be.revertedWithCustomError(templarMetadata, "AccessControlUnauthorizedAccount"); } }); diff --git a/protocol/test/templar-nft-tests.ts b/protocol/test/templar-nft-tests.ts index 8b684c019..04a0de9cd 100644 --- a/protocol/test/templar-nft-tests.ts +++ b/protocol/test/templar-nft-tests.ts @@ -5,7 +5,6 @@ import { expect } from "chai"; import { Templar, Templar__factory, } from "../typechain"; -import { shouldThrow } from "./helpers"; const DISCORD_ID = 1000; describe("Templar NFT", async () => { @@ -25,10 +24,9 @@ describe("Templar NFT", async () => { }) it("Only owner can grant roles", async () => { - await shouldThrow( - TEMPLAR.connect(amanda).grantRole(TEMPLAR.CAN_ASSIGN(), amanda.getAddress()), - /AccessControl:/ - ); + await expect( + TEMPLAR.connect(amanda).grantRole(TEMPLAR.CAN_ASSIGN(), amanda.getAddress())) + .to.be.revertedWithCustomError(TEMPLAR, "AccessControlUnauthorizedAccount"); }); it("Only owner can setBaseUri", async () => { @@ -41,10 +39,9 @@ describe("Templar NFT", async () => { // Amanda cannot const templar = TEMPLAR.connect(amanda); - await shouldThrow( - templar.setBaseUri("https://new-base-uri2/"), - /AccessControl:/ - ); + await expect( + templar.setBaseUri("https://new-base-uri2/")) + .to.be.revertedWithCustomError(templar, "AccessControlUnauthorizedAccount"); }); it("Only configured role can assign", async () => { @@ -60,10 +57,9 @@ describe("Templar NFT", async () => { // Ben cannot { const templar = TEMPLAR.connect(ben); - await shouldThrow( - templar.assign(amandaAddress, 1000), - /AccessControl:/ - ); + await expect( + templar.assign(amandaAddress, 1000)) + .to.be.revertedWithCustomError(templar, "AccessControlUnauthorizedAccount"); } }); diff --git a/protocol/test/temple-team-payments-tests.ts b/protocol/test/temple-team-payments-tests.ts index e1520819e..033085401 100644 --- a/protocol/test/temple-team-payments-tests.ts +++ b/protocol/test/temple-team-payments-tests.ts @@ -12,7 +12,7 @@ import { blockTimestamp } from './helpers'; import { PANIC_CODES } from "@nomicfoundation/hardhat-chai-matchers/panic"; const SECONDS_IN_1_MONTH = 2630000; -const ONLY_OWNER_ERROR = "Ownable: caller is not the owner"; +const ONLY_OWNER_ERROR = "OwnableUnauthorizedAccount"; describe('TempleTeamPayments', function () { const SECONDS_IN_10_MONTHS = 26300000; @@ -75,13 +75,13 @@ describe('TempleTeamPayments', function () { const ownerConnect = PAYMENTS.connect(owner); await expect(member0Connect.setAllocations([member1Address], [1000])) - .to.be.revertedWith(ONLY_OWNER_ERROR); + .to.be.revertedWithCustomError(PAYMENTS, ONLY_OWNER_ERROR).withArgs(await member0.getAddress()); await expect(member0Connect.pauseMember(member1Address)) - .to.be.revertedWith(ONLY_OWNER_ERROR); + .to.be.revertedWithCustomError(PAYMENTS, ONLY_OWNER_ERROR).withArgs(await member0.getAddress()); await expect(member0Connect.adhocPayment(member1Address, 100)) - .to.be.revertedWith(ONLY_OWNER_ERROR); + .to.be.revertedWithCustomError(PAYMENTS, ONLY_OWNER_ERROR).withArgs(await member0.getAddress()); await expect(member0Connect.withdrawTempleBalance(member1Address, 100)) - .to.be.revertedWith(ONLY_OWNER_ERROR); + .to.be.revertedWithCustomError(PAYMENTS, ONLY_OWNER_ERROR).withArgs(await member0.getAddress()); await ownerConnect.setAllocations([member1Address], [1000]); await ownerConnect.pauseMember(member1Address); @@ -100,7 +100,7 @@ describe('TempleTeamPayments', function () { const ownerConnect = PAYMENTS.connect(owner); const amount = 1000000; await expect(ownerConnect.withdrawTempleBalance(ethers.constants.AddressZero, amount)) - .to.be.revertedWith("ERC20: transfer to the zero address"); + .to.be.revertedWithCustomError(TEMPLE, "ERC20InvalidReceiver"); }); it('should allow owner to make ad hoc payments', async function () { diff --git a/protocol/test/temple-token-tests.ts b/protocol/test/temple-token-tests.ts index f1219fe85..ec0e6bd97 100644 --- a/protocol/test/temple-token-tests.ts +++ b/protocol/test/temple-token-tests.ts @@ -24,7 +24,8 @@ describe("Temple ERC20 Token", async () => { await shouldThrow(TEMPLE.mint(amandaAddress, 10), /Caller cannot mint/); // Only admin can add a minter - await shouldThrow(TEMPLE.connect(amanda).addMinter(amandaAddress), /Ownable: caller is not the owner/); + await expect(TEMPLE.connect(amanda).addMinter(amandaAddress)) + .to.be.revertedWithCustomError(TEMPLE, "OwnableUnauthorizedAccount").withArgs(await amanda.getAddress()); await TEMPLE.addMinter(minterAddress); // Only minter can, well mint @@ -33,7 +34,8 @@ describe("Temple ERC20 Token", async () => { await shouldThrow(TEMPLE.mint(amandaAddress, 10), /Caller cannot mint/); // Only admin can remove a minter - await shouldThrow(TEMPLE.connect(amanda).removeMinter(minterAddress), /Ownable: caller is not the owner/); + await expect(TEMPLE.connect(amanda).removeMinter(minterAddress)) + .to.be.revertedWithCustomError(TEMPLE, "OwnableUnauthorizedAccount").withArgs(await amanda.getAddress()); await TEMPLE.removeMinter(minterAddress); }); }); \ No newline at end of file diff --git a/protocol/test/temple-zaps.ts b/protocol/test/temple-zaps.ts deleted file mode 100644 index a889fec3c..000000000 --- a/protocol/test/temple-zaps.ts +++ /dev/null @@ -1,2033 +0,0 @@ -import { ethers, network } from "hardhat"; -import { Signer, BigNumber, BigNumberish } from "ethers"; -import { expect } from "chai"; -import axios from 'axios'; -import { blockTimestamp, shouldThrow, toAtto, impersonateSigner, resetFork } from "./helpers"; -import { DEPLOYED_CONTRACTS } from '../scripts/deploys/helpers'; -import addresses from "./constants"; -import { - Exposure, Exposure__factory, - ERC20, ERC20__factory, - JoiningFee, - JoiningFee__factory, - TempleZaps, TempleZaps__factory, - TempleERC20Token, - TempleERC20Token__factory, - TempleStableAMMRouter, - TempleStableAMMRouter__factory, - Vault, VaultedTemple, VaultedTemple__factory, - Vault__factory, - GenericZap__factory, GenericZap, - UniswapV2Pair, UniswapV2Router02NoEth, - UniswapV2Router02NoEth__factory, UniswapV2Pair__factory, - ICurvePool__factory, ICurvePool, IUniswapV2Pair__factory, IBalancerVault__factory, IBalancerVault -} from "../typechain"; - -const { WETH, USDC, UNI, FRAX, ETH, OGT, FEI, BNB, FXS, BAL } = addresses.tokens; -const { BINANCE_ACCOUNT_8, FRAX_WHALE, FXS_WHALE } = addresses.accounts; -const { ZEROEX_EXCHANGE_PROXY, TEMPLE_STABLE_ROUTER, UNISWAP_V2_ROUTER, - TEMPLE_FRAX_PAIR, BALANCER_VAULT } = addresses.contracts; -const { MULTISIG, TEMPLE, TEMPLE_V2_ROUTER } = DEPLOYED_CONTRACTS.mainnet; - -const ZEROEX_QUOTE_ENDPOINT = 'https://api.0x.org/swap/v1/quote?'; -const defaultTokens = [ - FRAX, USDC, FEI, USDC, UNI, - WETH, FXS, BNB, BAL, ETH -]; - -let genericZaps: GenericZap; -let templeZaps: TempleZaps; -let vault: Vault; -let templeExposure: Exposure; -let vaultedTemple: VaultedTemple; -let templeToken: TempleERC20Token; -let joiningFee: JoiningFee; -let templeRouter: TempleStableAMMRouter; -let owner: Signer; -let alice: Signer; -let alan: Signer; -let fraxSigner: Signer; -let ownerAddress: string; -let aliceAddress: string; -let alanAddress: string; -let balancerVault: IBalancerVault; -const poolId = "0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014"; -const bptPoolToken = "0x5c6Ee304399DBdB9C8Ef030aB642B10820DB8F56"; - -/** - * If 0x quotes need to be refreshed, it needs to be done across all tests. - * 1. Uncomment the line in before(): BLOCK_NUMBER = await getLatestBlockNumberWithEnoughConfirmations() - * 2. For each test which requires quotes, change to .only(), uncomment the section like: - * // Dump quote if refreshing: - * ... - * 3. Run tests, then copy/paste each test's swap data in place. Also the let BLOCK_NUMBER = XXXX; just below here - * 4. Re-comment 1/ and 2/ - * 5. Run tests - */ - -// eslint-disable-next-line prefer-const -let BLOCK_NUMBER = 15780731; - -interface ZeroExQuote { - swapCallData: string; - price: string; - guaranteedPrice: string; -} - -// Intentionally skipped as these were never rolled out. -describe.skip("Temple Stax Core Zaps", async () => { - before(async () => { - [owner, alice, alan] = await ethers.getSigners(); - ownerAddress = await owner.getAddress(); - aliceAddress = await alice.getAddress(); - alanAddress = await alan.getAddress(); - - // Get the latest available block number if refreshing quotes. - // as real-time live data is being queried from 0x API, there's the possibility that prices may differ from forked mainnet tests (due to block number) - // and hence tokens out (in tests) may differ from real expected values - // use most recent block number in tests (with enough block confirmations) - // await resetFork(await getLatestBlockNumberWithEnoughConfirmations()); - // BLOCK_NUMBER = await getLatestBlockNumberWithEnoughConfirmations(); - - await resetFork(BLOCK_NUMBER); - }); - // reset to normal test state after all tests have finished - after(async () => { - await network.provider.request({ - method: "hardhat_reset", - params: [] - }); - }); - - beforeEach(async () => { - fraxSigner = await impersonateSigner(FRAX_WHALE); - - genericZaps = await new GenericZap__factory(owner).deploy(UNISWAP_V2_ROUTER); - templeZaps = await new TempleZaps__factory(owner).deploy( - TEMPLE, - TEMPLE_V2_ROUTER, - genericZaps.address - ); - - templeRouter = TempleStableAMMRouter__factory.connect(TEMPLE_STABLE_ROUTER, owner); - - await approveDefaultTokens(genericZaps); - - balancerVault = IBalancerVault__factory.connect(BALANCER_VAULT, alice); - }); - - describe("Admin", async () => { - it("admin tests", async () => { - await shouldThrow(genericZaps.connect(alice).setApprovedTargets([FRAX, TEMPLE], [ZEROEX_EXCHANGE_PROXY, TEMPLE_STABLE_ROUTER], [true, true]), /Ownable: caller is not the owner/); - await shouldThrow(genericZaps.connect(alice).toggleContractActive(), /Ownable: caller is not the owner/); - await shouldThrow(genericZaps.connect(alice).recoverToken(FRAX, aliceAddress, 100), /Ownable: caller is not the owner/); - await shouldThrow(templeZaps.connect(alice).setZaps(templeRouter.address), /Ownable: caller is not the owner/); - - // happy paths - await genericZaps.setApprovedTargets([FRAX, TEMPLE], [ZEROEX_EXCHANGE_PROXY, TEMPLE_STABLE_ROUTER], [true, true]); - await genericZaps.toggleContractActive(); - await templeZaps.setZaps(genericZaps.address); - }); - - it("sets zaps", async () => { - await expect(templeZaps.setZaps(genericZaps.address)) - .to.emit(templeZaps, "SetZaps") - .withArgs(genericZaps.address); - - expect(await templeZaps.zaps()).to.eq(genericZaps.address); - }); - - it("sets approved targets", async () => { - await shouldThrow(genericZaps.setApprovedTargets([FRAX], [ZEROEX_EXCHANGE_PROXY], [true, true]), /Invalid Input length/); - await genericZaps.setApprovedTargets([FRAX, UNI], [ZEROEX_EXCHANGE_PROXY, TEMPLE_STABLE_ROUTER], [true, false]); - expect(await genericZaps.approvedTargets(FRAX, ZEROEX_EXCHANGE_PROXY)).to.eq(true); - expect(await genericZaps.approvedTargets(UNI, TEMPLE_STABLE_ROUTER)).to.eq(false); - }); - - it("toggles contract active", async () => { - const currentState = await genericZaps.paused(); - await genericZaps.toggleContractActive(); - expect(await genericZaps.paused()).to.eq(!currentState); - }); - - it("recovers token", async () => { - // invalid receiver - await shouldThrow(templeZaps.recoverToken(ETH, ETH, 100), /TempleZaps: Invalid receiver/); - await shouldThrow(templeZaps.recoverToken(ETH, aliceAddress, ethers.utils.parseEther("1100")), /TempleZaps: insufficient eth balance/); - // transfer frax to zaps contract - const frax = ERC20__factory.connect(FRAX, fraxSigner); - await frax.transfer(genericZaps.address, 1000); - - // recover - const checkSumedAddr = ethers.utils.getAddress(FRAX); - await expect(genericZaps.recoverToken(FRAX, ownerAddress, 1000)) - .to.emit(genericZaps, "TokenRecovered") - .withArgs(checkSumedAddr, ownerAddress, 1000); - - expect(await getBalance(frax, ownerAddress)).eq(1000); - - // recover ETH - const ethBalanceBefore = await genericZaps.provider.getBalance(genericZaps.address); - await expect(genericZaps.recoverToken(ETH, ownerAddress, ethBalanceBefore)) - .to.emit(genericZaps, "TokenRecovered") - .withArgs(ETH, ownerAddress, ethBalanceBefore); - expect(await genericZaps.provider.getBalance(genericZaps.address)) - .to.eq(0); - }); - }); - - describe("Temple Zaps", async () => { - - beforeEach(async () => { - await approveDefaultTokens(genericZaps); - await templeZaps.setTempleRouter(TEMPLE_STABLE_ROUTER); - await templeZaps.setSupportedStables([FRAX, FEI], [true, true]); - - templeToken = await airdropTemple( - owner, - [owner, alice], - toAtto(100000) - ); - - joiningFee = await new JoiningFee__factory(owner).deploy( - toAtto(1), - ); - - templeExposure = await new Exposure__factory(owner).deploy( - "temple exposure", - "TPL-VAULT-EXPOSURE", - templeToken.address, - ) - - vaultedTemple = await new VaultedTemple__factory(owner).deploy( - templeToken.address, - templeExposure.address - ); - - await templeExposure.setLiqidator(vaultedTemple.address); - - vault = await new Vault__factory(owner).deploy( - "Temple 1m Vault", - "TV_1M", - templeToken.address, - templeExposure.address, - vaultedTemple.address, - 60 * 10, - 60, - { p: 1, q: 1}, - joiningFee.address, - await blockTimestamp() - ); - - await templeExposure.setMinterState(vault.address, true); - await templeExposure.setMinterState(ownerAddress, true); - - await templeToken.connect(alice).increaseAllowance(vault.address, toAtto(1000000)); - - // supported stables - await templeZaps.setSupportedStables([FRAX, FEI], [true, true]); - }); - - it("sets temple router", async () => { - await templeZaps.setTempleRouter(TEMPLE_STABLE_ROUTER); - expect(await templeZaps.templeRouter()).to.eq(TEMPLE_STABLE_ROUTER); - }); - - it("sets supported stables", async () => { - await shouldThrow(templeZaps.setSupportedStables([UNI, FRAX], [true]), /Invalid Input length/); - await templeZaps.setSupportedStables([USDC, FRAX], [true, false]); - expect(await templeZaps.supportedStables(USDC)).to.eq(true); - expect(await templeZaps.supportedStables(FRAX)).to.eq(false); - }); - - it("zap eth but zero value", async () => { - await shouldThrow(templeZaps.zapInTemple( - ETH, - 100, - 1, - FRAX, - 1, - ZEROEX_EXCHANGE_PROXY, - '0x', - { value: 0 } - ), /Swap: Input ETH mismatch/); - }); - - it("should throw error when paused", async () => { - await templeZaps.toggleContractActive(); - expect(await templeZaps.paused()).to.be.true; - await shouldThrow(templeZaps.zapInTemple( - ETH, - 0, - 0, - ETH, - 0, - ETH, - "0x" - ), /ZapBase: Paused/); - }); - - it("should throw error for unsupported stable", async () => { - await templeZaps.setSupportedStables([FRAX, FEI], [false, false]); - await shouldThrow(templeZaps.zapInTemple( - ETH, - 0, - 0, - FRAX, - 0, - ETH, - "0x" - ), /TempleZaps: Unsupported stable/); - }); - - it("should throw error for unapproved token", async () => { - - await shouldThrow(genericZaps.zapIn( - OGT, - 100, - FRAX, - 10, - ZEROEX_EXCHANGE_PROXY, - '0x' - ), /GenericZaps: Unsupported token\/target/); - }); - - it("should zap ETH to TEMPLE", async () => { - const tokenAddr = ETH; - const tokenAmount = "5"; - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, FRAX); return; - const quote: ZeroExQuote = { - swapCallData: '0x3598d8ab000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000015c50ada4c263b815c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064853d955acef822db058eb8505911ed77f175b99e000000000000000000000000000000000000000000000000000000000000869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000b27a5d17d6634faa98', - price: '1298.0364487878248', - guaranteedPrice: '1285.056084299946552' - }; - - await zapTemple( - alice, - aliceAddress, - templeZaps, - tokenAddr, - tokenAmount, - quote - ); - }); - - it("should zap ERC20 tokens to TEMPLE", async () => { - const tokenAddr = FXS; - const tokenAmount = "5"; - - // send some tokens - const whale = await impersonateSigner(BINANCE_ACCOUNT_8); - const tokenContract = ERC20__factory.connect(tokenAddr, whale); - await tokenContract.transfer(aliceAddress, ethers.utils.parseEther(tokenAmount)); - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, FRAX); return; - const quote: ZeroExQuote = { - swapCallData: '0xd9627aa400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000004563918244f40000000000000000000000000000000000000000000000000001ccdd5701a1610da2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000853d955acef822db058eb8505911ed77f175b99e869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000009f244233a1634faaa0', - price: '6.708847452891713455', - guaranteedPrice: '6.64175897836279632' - }; - - await zapTemple( - alice, - aliceAddress, - templeZaps, - tokenAddr, - tokenAmount, - quote - ); - }); - - it("should zap ERC20 tokens to TEMPLE for another recipient", async () => { - const tokenAddr = FXS; - const tokenAmount = "5"; - - // send some FXS - const bnbWhale = await impersonateSigner(BINANCE_ACCOUNT_8); - const fxsToken = ERC20__factory.connect(tokenAddr, bnbWhale); - await fxsToken.transfer(aliceAddress, ethers.utils.parseEther(tokenAmount)); - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, FRAX); return; - const quote: ZeroExQuote = { - swapCallData: '0xd9627aa400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000004563918244f40000000000000000000000000000000000000000000000000001ccdd5701a1610da2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000853d955acef822db058eb8505911ed77f175b99e869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000c2b5e92369634faaa3', - price: '6.708847452891713455', - guaranteedPrice: '6.64175897836279632' - }; - - await zapTemple( - alice, - alanAddress, - templeZaps, - tokenAddr, - tokenAmount, - quote - ); - }); - - it("should zap ERC20 tokens to Temple and deposit in vault", async () => { - const tokenAddr = FXS; - const tokenAmount = "5"; - - // send some BNB - const whale = await impersonateSigner(FXS_WHALE); - const bnbToken = ERC20__factory.connect(tokenAddr, whale); - await bnbToken.transfer(aliceAddress, ethers.utils.parseEther(tokenAmount)); - await templeZaps.setSupportedStables([FRAX, FEI], [true, true]); - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, FRAX); return; - const quote: ZeroExQuote = { - swapCallData: '0xd9627aa400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000004563918244f40000000000000000000000000000000000000000000000000001ccdd5701a1610da2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000853d955acef822db058eb8505911ed77f175b99e869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000004f72bac542634faaa7', - price: '6.708847452891713455', - guaranteedPrice: '6.64175897836279632' - }; - - await zapInVault( - alice, - templeZaps, - tokenAddr, - tokenAmount, - vault.address, - aliceAddress, - quote - ); - }); - - it("should zap ERC20 tokens to Temple and deposit in vault for another user", async () => { - const tokenAddr = FXS; - const tokenAmount = "5"; - - // send some BNB - const whale = await impersonateSigner(FXS_WHALE); - const bnbToken = ERC20__factory.connect(tokenAddr, whale); - await bnbToken.transfer(aliceAddress, ethers.utils.parseEther(tokenAmount)); - await templeZaps.setSupportedStables([FRAX, FEI], [true, true]); - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, FRAX); return; - const quote: ZeroExQuote = { - swapCallData: '0xd9627aa400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000004563918244f40000000000000000000000000000000000000000000000000001ccdd5701a1610da2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000853d955acef822db058eb8505911ed77f175b99e869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000009a33959d35634faaaa', - price: '6.708847452891713455', - guaranteedPrice: '6.64175897836279632' - }; - - await zapInVault( - alice, - templeZaps, - tokenAddr, - tokenAmount, - vault.address, - alanAddress, - quote - ); - }); - - it("should zap ETH to Temple and deposit in vault", async () => { - const tokenAddr = ETH; - const tokenAmount = "5"; - - // send some BNB - const whale = await impersonateSigner(FXS_WHALE); - const bnbToken = ERC20__factory.connect(tokenAddr, whale); - await bnbToken.transfer(aliceAddress, ethers.utils.parseEther(tokenAmount)); - await templeZaps.setSupportedStables([FRAX, FEI], [true, true]); - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, FRAX); return; - const quote: ZeroExQuote = { - swapCallData: '0x3598d8ab000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000015c50ada4c263b815c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064853d955acef822db058eb8505911ed77f175b99e000000000000000000000000000000000000000000000000000000000000869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000f94111a386634faaae', - price: '1298.0364487878248', - guaranteedPrice: '1285.056084299946552' - }; - - await zapInVault( - alice, - templeZaps, - tokenAddr, - tokenAmount, - vault.address, - aliceAddress, - quote - ); - }); - - it("zaps token and adds temple LP", async () => { - const tokenAddr = ethers.utils.getAddress(FXS); - const tokenAmount = "1"; - - // send some tokens - const whale = await impersonateSigner(BINANCE_ACCOUNT_8); - const tokenContract = ERC20__factory.connect(tokenAddr, whale); - await tokenContract.transfer(aliceAddress, ethers.utils.parseEther(tokenAmount)); - - await templeZaps.connect(owner).setSupportedStables([FRAX, FEI], [true, true]); - const pairContract = IUniswapV2Pair__factory.connect(TEMPLE_FRAX_PAIR, alice); - const lpBefore = await pairContract.balanceOf(aliceAddress); - - // Dump quote if refreshing: - // const token0 = await pairContract.token0(); - // const token1 = await pairContract.token1(); - // const toToken = equalAddresses(token0, TEMPLE) ? token1 : token0; - // await logZeroExQuote(tokenAddr, tokenAmount, toToken); - // return; - - const quote: ZeroExQuote = { - swapCallData: '0xd9627aa400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000005c2c560ae1556b3c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000853d955acef822db058eb8505911ed77f175b99e869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000334be335be634faab3', - price: '6.708866823429062914', - guaranteedPrice: '6.641778155194772284' - }; - - await zapInTempleLP( - alice, - templeZaps, - genericZaps, - TEMPLE_FRAX_PAIR, - tokenAddr, - tokenAmount, - aliceAddress, - false, - quote - ); - - const lpAfter = await pairContract.balanceOf(aliceAddress); - expect(lpAfter).gt(lpBefore); - }); - - it("zaps ETH and adds temple LP", async () => { - const tokenAddr = ETH; - const tokenAmount = "1"; - - await templeZaps.connect(owner).setSupportedStables([FRAX, FEI], [true, true]); - const pairContract = IUniswapV2Pair__factory.connect(TEMPLE_FRAX_PAIR, alice); - const lpBefore = await pairContract.balanceOf(aliceAddress); - - // Dump quote if refreshing: - // const token0 = await pairContract.token0(); - // const token1 = await pairContract.token1(); - // const toToken = equalAddresses(token0, TEMPLE) ? token1 : token0; - // await logZeroExQuote(tokenAddr, tokenAmount, toToken); - // return; - - const quote: ZeroExQuote = { - swapCallData: '0x3598d8ab0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000045a9d708f7b1021afb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064853d955acef822db058eb8505911ed77f175b99e000000000000000000000000000000000000000000000000000000000000869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000001e94f25216634faab7', - price: '1298.044041877051841676', - guaranteedPrice: '1285.063601458281323259' - }; - - await zapInTempleLP( - alice, - templeZaps, - genericZaps, - TEMPLE_FRAX_PAIR, - tokenAddr, - tokenAmount, - aliceAddress, - false, - quote - ); - - const lpAfter = await pairContract.balanceOf(aliceAddress); - expect(lpAfter).gt(lpBefore); - }); - }); - - describe("Generic Zaps", async () => { - - const tokenAddr = ethers.utils.getAddress(FXS); - const tokenAmount = "50"; - const fxsCvxFxsPool = "0xd658A338613198204DCa1143Ac3F01A722b5d94A"; - const cvxFxs = "0xFEEf77d3f69374f66429C91d732A244f074bdf74"; - - beforeEach( async () => { - // send some FXS - const bnbWhale = await impersonateSigner(BINANCE_ACCOUNT_8); - const fxsToken = ERC20__factory.connect(tokenAddr, bnbWhale); - await fxsToken.transfer(aliceAddress, ethers.utils.parseEther(tokenAmount)); - }); - - afterEach( async () => { - await resetFork(BLOCK_NUMBER); - }); - - it("zaps in erc20 tokens to erc20 tokens", async () => { - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, UNI); return; - const quote: ZeroExQuote = { - swapCallData: '0xd9627aa40000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000002c9166aa9f2225860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984869584cd0000000000000000000000001000000000000000000000000000000000000011000000000000000000000000000000000000000000000051971f47c6634faabb', - price: '1.0380479651853456', - guaranteedPrice: '1.027667485533492144' - }; - - await zapIn( - alice, - aliceAddress, - genericZaps, - tokenAddr, - tokenAmount, - UNI, - quote - ); - }); - - it("zaps in erc20 tokens to erc20 tokens for another user", async () => { - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, UNI); return; - const quote: ZeroExQuote = { - swapCallData: '0xd9627aa40000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000002c9166aa9f2225860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000119c4b33a3634faabe', - price: '1.0380479651853456', - guaranteedPrice: '1.027667485533492144' - }; - - await zapIn( - alice, - alanAddress, - genericZaps, - tokenAddr, - tokenAmount, - UNI, - quote - ); - }); - - it("zaps in ETH to erc20 tokens", async () => { - // Dump quote if refreshing: - // await logZeroExQuote(ETH, tokenAmount, UNI); return; - const quote: ZeroExQuote = { - swapCallData: '0xf35b47330000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000021c22907ee4d1381d1800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000006ac091172f013bfb000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f98400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000024b231dff8286c4060000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb81f9840a85d5af5bf1d1762f925bdaddc4201f984000000000000000000000000000000000000000000869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000f991aa398c634faac1', - price: '201.287523836733767995', - guaranteedPrice: '199.274648598366430316' - }; - - await zapIn( - alice, - aliceAddress, - genericZaps, - ETH, - tokenAmount, - UNI, - quote - ); - }); - - it("zaps in token to uniswap v2 LP", async () => { - const router = UniswapV2Router02NoEth__factory.connect(UNISWAP_V2_ROUTER, alice); - const fxsFraxPairAddress = "0xE1573B9D29e2183B1AF0e743Dc2754979A40D237"; - const pair = UniswapV2Pair__factory.connect(fxsFraxPairAddress, alice); - - await zapInLPUniV2( - alice, - genericZaps, - router, - pair, - tokenAddr, - tokenAmount, - aliceAddress, - false, - false - ); - }); - - it("zaps in ETH to uniswap v2 LP", async () => { - const router = UniswapV2Router02NoEth__factory.connect(UNISWAP_V2_ROUTER, alice); - const fxsFraxPairAddress = "0xE1573B9D29e2183B1AF0e743Dc2754979A40D237"; - const pair = UniswapV2Pair__factory.connect(fxsFraxPairAddress, alice); - - // Dump quote if refreshing: - // const token0 = await pair.token0(); - // const token1 = await pair.token1(); - // const toToken = token0 == WETH ? token1 : token0; - // await logZeroExQuote(ETH, tokenAmount, toToken); - // return; - - const quote: ZeroExQuote = { - swapCallData: '0x5161b966000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000200794e29aefb61be730000000000000000000000000000000000000000000000000000000000000003000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000853d955acef822db058eb8505911ed77f175b99e0000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064853d955acef822db058eb8505911ed77f175b99e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000853d955acef822db058eb8505911ed77f175b99e0000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000636da729e6634faac5', - price: '190.979271424193569173', - guaranteedPrice: '189.069478709951633481' - }; - - await zapInLPUniV2( - alice, - genericZaps, - router, - pair, - ETH, - tokenAmount, - aliceAddress, - false, - false, - quote - ); - }); - - it("zaps in token to uniswap v2 LP, transferring residual", async () => { - const router = UniswapV2Router02NoEth__factory.connect(UNISWAP_V2_ROUTER, alice); - const fxsFraxPairAddress = "0xE1573B9D29e2183B1AF0e743Dc2754979A40D237"; - const pair = UniswapV2Pair__factory.connect(fxsFraxPairAddress, alice); - - await zapInLPUniV2( - alice, - genericZaps, - router, - pair, - tokenAddr, - tokenAmount, - aliceAddress, - false, - true - ); - }); - - it("zaps in token to uniswap v2 LP for another user, transferring residual", async () => { - const router = UniswapV2Router02NoEth__factory.connect(UNISWAP_V2_ROUTER, alice); - const fxsFraxPairAddress = "0xE1573B9D29e2183B1AF0e743Dc2754979A40D237"; - const pair = UniswapV2Pair__factory.connect(fxsFraxPairAddress, alice); - - await zapInLPUniV2( - alice, - genericZaps, - router, - pair, - tokenAddr, - tokenAmount, - alanAddress, - false, - true - ); - }); - - it("zaps in token to curve LP", async () => { - const pool = ICurvePool__factory.connect(fxsCvxFxsPool, alice); - const poolAddress = pool.address; - - await genericZaps.setApprovedTargets([FXS, cvxFxs], [poolAddress, poolAddress], [true, true]); - await zapInLPCurvePool( - alice, - genericZaps, - pool, - tokenAddr, - tokenAmount, - aliceAddress, - true, - false - ); - }); - - it("zaps in ETH to curve LP", async () => { - const pool = ICurvePool__factory.connect(fxsCvxFxsPool, alice); - const poolAddress = pool.address; - - await genericZaps.setApprovedTargets([FXS, cvxFxs], [poolAddress, poolAddress], [true, true]); - - // Dump quote if refreshing: - // const token0 = await pool.coins(0); - // const token1 = await pool.coins(1); - // const toToken = token0 == WETH ? token1 : token0; - // await logZeroExQuote(ETH, tokenAmount, toToken); - // return; - - const quote: ZeroExQuote = { - swapCallData: '0x5161b966000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000200794e29aefb61be730000000000000000000000000000000000000000000000000000000000000003000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000853d955acef822db058eb8505911ed77f175b99e0000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064853d955acef822db058eb8505911ed77f175b99e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000853d955acef822db058eb8505911ed77f175b99e0000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000007b53aed35f634faac9', - price: '190.979271424193569173', - guaranteedPrice: '189.069478709951633481' - }; - - await zapInLPCurvePool( - alice, - genericZaps, - pool, - ETH, - tokenAmount, - aliceAddress, - true, - false, - quote - ); - }); - - it("zaps in curve LP for another user", async () => { - const pool = ICurvePool__factory.connect(fxsCvxFxsPool, alice); - const poolAddress = pool.address; - await genericZaps.setApprovedTargets([FXS, cvxFxs], [poolAddress, poolAddress], [true, true]); - await zapInLPCurvePool( - alice, - genericZaps, - pool, - tokenAddr, - tokenAmount, - alanAddress, - true, - false - ); - }); - - it("zaps in token to balancer LP, one sided liquidity", async () => { - const res = await balancerVault.getPoolTokens(poolId); - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, res.tokens[0]); return; - const quote: ZeroExQuote = { - swapCallData: '0x6af479b20000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000003200e76d90c7f95bf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000423432b6a60d23ca0dfca7761b7ab56459d9c964d0000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb8ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000000000000000000869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000b1b2c875d6634faace', - price: '1.164649425345575086', - guaranteedPrice: '1.153002931092119335' - }; - - await zapInBalancerLP( - alice, - genericZaps, - balancerVault, - tokenAddr, - tokenAmount, - res.tokens, - aliceAddress, - poolId, - bptPoolToken, - true, - 1, - quote - ); - }); - - it("zaps in ETH to balancer LP, one sided liquidity", async () => { - const res = await balancerVault.getPoolTokens(poolId); - - // Dump quote if refreshing: - // await logZeroExQuote(ETH, tokenAmount, res.tokens[0]); return; - const quote: ZeroExQuote = { - swapCallData: '0x415565b0000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000025ff6be4fc0a8f7818c00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000002b5e3af16b18800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000001942616c616e6365725632000000000000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000025ff6be4fc0a8f7818c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000205c6ee304399dbdb9c8ef030ab642b10820db8f5600020000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000422eb9345d634faad1', - price: '226.564714925444247187', - guaranteedPrice: '224.299067776189804715' - }; - - await zapInBalancerLP( - alice, - genericZaps, - balancerVault, - ETH, - tokenAmount, - res.tokens, - aliceAddress, - poolId, - bptPoolToken, - true, - 1, - quote - ); - }); - - it("zaps in token to balancer LP for another user, one sided liquidity", async () => { - const res = await balancerVault.getPoolTokens(poolId); - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, res.tokens[0]); return; - const quote: ZeroExQuote = { - swapCallData: '0x6af479b20000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000003200e76d90c7f95bf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000423432b6a60d23ca0dfca7761b7ab56459d9c964d0000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb8ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000000000000000000869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000009ba346d24a634faad5', - price: '1.164649425345575086', - guaranteedPrice: '1.153002931092119335' - }; - - await zapInBalancerLP( - alice, - genericZaps, - balancerVault, - tokenAddr, - tokenAmount, - res.tokens, - alanAddress, - poolId, - bptPoolToken, - true, - 1, - quote - ); - }); - - it("zaps in token to balancer LP, two sided liquidity", async () => { - const res = await balancerVault.getPoolTokens(poolId); - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, res.tokens[0]); return; - const quote: ZeroExQuote = { - swapCallData: '0x6af479b20000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000003200e76d90c7f95bf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000423432b6a60d23ca0dfca7761b7ab56459d9c964d0000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb8ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000000000000000000869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000009296383cf5634faad8', - price: '1.164649425345575086', - guaranteedPrice: '1.153002931092119335' - }; - - await zapInBalancerLP( - alice, - genericZaps, - balancerVault, - tokenAddr, - tokenAmount, - res.tokens, - aliceAddress, - poolId, - bptPoolToken, - false, - 1, - quote - ); - }); - - it("zaps in ETH to balancer LP, two sided liquidity", async () => { - const res = await balancerVault.getPoolTokens(poolId); - - // Dump quote if refreshing: - // await logZeroExQuote(ETH, tokenAmount, res.tokens[0]); return; - const quote: ZeroExQuote = { - swapCallData: '0x415565b0000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000025ff6be4fc0a8f7818c00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000002b5e3af16b18800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000001942616c616e6365725632000000000000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000025ff6be4fc0a8f7818c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000205c6ee304399dbdb9c8ef030ab642b10820db8f5600020000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000e2d1548d85634faadb', - price: '226.564714925444247187', - guaranteedPrice: '224.299067776189804715' - }; - - await zapInBalancerLP( - alice, - genericZaps, - balancerVault, - ETH, - tokenAmount, - res.tokens, - aliceAddress, - poolId, - bptPoolToken, - false, - 1, - quote - ); - }); - - it("zaps in token to balancer LP for another user, two sided liquidity", async () => { - const res = await balancerVault.getPoolTokens(poolId); - - // Dump quote if refreshing: - // await logZeroExQuote(tokenAddr, tokenAmount, res.tokens[0]); return; - const quote: ZeroExQuote = { - swapCallData: '0x6af479b20000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000003200e76d90c7f95bf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000423432b6a60d23ca0dfca7761b7ab56459d9c964d0000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb8ba100000625a3754423978a60c9317c58a424e3d000000000000000000000000000000000000000000000000000000000000869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000000000cc7aa9d8e3634faade', - price: '1.164649425345575086', - guaranteedPrice: '1.153002931092119335' - }; - - await zapInBalancerLP( - alice, - genericZaps, - balancerVault, - tokenAddr, - tokenAmount, - res.tokens, - alanAddress, - poolId, - bptPoolToken, - false, - 1, - quote - ); - }); - }); -}); - -async function approveDefaultTokens( - zaps: GenericZap -) { - const tokens = []; - const approvals = []; - const approvedTargets = []; - const targets = [ZEROEX_EXCHANGE_PROXY, UNISWAP_V2_ROUTER, TEMPLE_STABLE_ROUTER]; - for (const token of defaultTokens) { - for (const target of targets) { - tokens.push(token); - approvedTargets.push(target); - approvals.push(true); - } - } - await zaps.setApprovedTargets(tokens, approvedTargets, approvals); -} - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -async function logZeroExQuote(fromToken: string, fromAmount: string, toToken: string) { - const fromTokenContract = ERC20__factory.connect(fromToken, owner); - - let fromTokenDecimals, sellToken; - if (fromToken === ETH) { - fromTokenDecimals = 18; - sellToken = 'ETH'; - } else { - fromTokenDecimals = await fromTokenContract.decimals(); - sellToken = fromToken; - } - - const sellAmount = ethers.utils.parseUnits(fromAmount, fromTokenDecimals).toString(); - - const url = `${ZEROEX_QUOTE_ENDPOINT}sellToken=${sellToken}&sellAmount=${sellAmount}&buyToken=${toToken}`; - console.log(url); - const response = await axios.get(url); - - const { - data: { data: swapCallData, price, guaranteedPrice }, - } = response; - - console.log({ - swapCallData, - price, - guaranteedPrice - }); -} - -async function zapInBalancerLP( - signer: Signer, - zaps: GenericZap, - balancerVault: IBalancerVault, - fromToken: string, - fromAmount: string, - tokens: Array, - zapInFor: string, - poolId: string, - poolToken: string, - isOneSidedLiquidityAddition: boolean, - limitSlippageTolerance: number, - quoteData: ZeroExQuote -) { - // init vars - const signerAddress = await signer.getAddress(); - const fromTokenContract = ERC20__factory.connect(fromToken, signer); - // not necessarily an ERC20 but does the balanceOf query - const bptPoolToken = ERC20__factory.connect(poolToken, signer); - let fromTokenDecimals; - let symbol; - if (fromToken === ETH) { - symbol = 'ETH'; - fromTokenDecimals = 18; - } else { - symbol = await fromTokenContract.symbol(); - fromTokenDecimals = await fromTokenContract.decimals(); - } - const fromAmountBN = ethers.utils.parseUnits(fromAmount, fromTokenDecimals); - // approve zaps - await approveContract(fromToken, fromAmountBN, fromTokenDecimals, signer, zaps.address); - - let swapCallData, price, guaranteedPrice; - let firstSwapMinAmountOut, poolSwapMinAmountOut; - const useAltFunction = false; - let otherToken, toToken; - let poolSwapData; - // check if from token is one of balancer pool tokens - let isOneOf; - for (let i=0; i { - const templeMultisig = await impersonateSigner(MULTISIG) - const templeToken = TempleERC20Token__factory.connect(TEMPLE, templeMultisig); - const templeTokenOwner = TempleERC20Token__factory.connect(TEMPLE, owner); - - await templeToken.addMinter(ownerAddress); - for (const u of airdropRecipients) { - await templeTokenOwner.mint(await u.getAddress(), airdropAmount) - } - - return templeTokenOwner; -} - -// zap temple using templezaps contract, which uses generic zaps -async function zapTemple( - signer: Signer, - zapInfor: string, - templeZaps: TempleZaps, - tokenAddr: string, - tokenAmount: string, - quoteData?: ZeroExQuote -) { - const tokenContract = ERC20__factory.connect(tokenAddr, signer); - const templeToken = ERC20__factory.connect(TEMPLE, signer); - let symbol; - let decimals; - if (tokenAddr === ETH) { - symbol = 'ETH'; - decimals = 18; - } else { - symbol = await tokenContract.symbol(); - decimals = await tokenContract.decimals(); - } - - // Get TEMPLE balance before zap - const signerAddress = await signer.getAddress(); - const balanceBefore = signerAddress == zapInfor ? await getBalance(templeToken, signerAddress) : await getBalance(templeToken, zapInfor); - - // Approve token - if (tokenAddr !== ETH) { - await tokenContract.approve( - templeZaps.address, - ethers.utils.parseUnits(tokenAmount, decimals) - ); - } - - // Get quote from 0x API - let swapCallData, price, guaranteedPrice; - const sellAmount = ethers.utils.parseUnits(tokenAmount, decimals).toString(); - - if (tokenAddr === FRAX) { - guaranteedPrice = '0.99'; - swapCallData = '0x'; - } else { - if (quoteData == undefined) { - throw Error("Missing quote data"); - } - - ({ swapCallData, price, guaranteedPrice } = quoteData); - - console.log(`Price of ${symbol} in FRAX: ${price}`); - } - - const minFraxReceived = parseFloat(guaranteedPrice) * parseFloat(tokenAmount); - const minFraxReceivedWei = ethers.utils.parseUnits( - minFraxReceived.toString(), - 18 - ); - const fraxPair = await templeRouter.tokenPair(FRAX); - // Do zap - const minExpectedTemple = await getExpectedTemple( - signer, - guaranteedPrice, - tokenAmount, - fraxPair - ); - - const templeZapsConnect = templeZaps.connect(signer); - const overrides: { value?: BigNumber } = {}; - if (tokenAddr === ETH) { - overrides.value = ethers.utils.parseEther(tokenAmount); - } - if (signerAddress == zapInfor) { - await templeZapsConnect.zapInTemple( - tokenAddr, - sellAmount, - minExpectedTemple, - FRAX, - minFraxReceivedWei, - ZEROEX_EXCHANGE_PROXY, - swapCallData, - overrides - ) - //.to.emit(zaps, "ZappedIn") - //.withArgs(templeZaps.address, checkSumedTokenAddr, sellAmount, checkSumedFraxAddr, minFraxReceivedWei); - } else { - await templeZapsConnect.zapInTempleFor( - tokenAddr, - sellAmount, - minExpectedTemple, - FRAX, - minFraxReceivedWei, - zapInfor, - ZEROEX_EXCHANGE_PROXY, - swapCallData, - overrides - ) - //.to.emit(zaps, "ZappedIn") - } - - console.log( - `Minimum expected Temple: ${ethers.utils.formatUnits( - minExpectedTemple, - 18 - )}` - ); - - /// check amounts - const balanceAfter = await getBalance(templeToken, zapInfor); - - expect(balanceAfter.gte(minExpectedTemple)).to.be.true; - expect(balanceAfter).to.gte(minExpectedTemple.add(balanceBefore)); -} - -async function zapIn( - signer: Signer, - zapInfor: string, - zaps: GenericZap, - tokenAddr: string, - tokenAmount: string, - toTokenAddr: string, - quoteData: ZeroExQuote -) { - const tokenContract = ERC20__factory.connect(tokenAddr, signer); - const toTokenContract = ERC20__factory.connect(toTokenAddr, signer); - let symbol; - let decimals; - if (tokenAddr === ETH) { - symbol = 'ETH'; - decimals = 18; - } else { - symbol = await tokenContract.symbol(); - decimals = await tokenContract.decimals(); - } - - // Get TEMPLE balance before zap - const signerAddress = await signer.getAddress(); - //const balanceBefore = await getBalance(tokenContract, signerAddress); - const balanceBefore = signerAddress == zapInfor ? - await getBalance(toTokenContract, signerAddress) : await getBalance(toTokenContract, zapInfor); - - // Approve token - if (tokenAddr !== ETH) { - await tokenContract.approve( - zaps.address, - ethers.utils.parseUnits(tokenAmount, decimals) - ); - } - - const sellAmount = ethers.utils.parseUnits(tokenAmount, decimals).toString(); - const { swapCallData, price, guaranteedPrice } = quoteData; - - console.log(`Price of ${symbol} in ${toTokenAddr}: ${price}`); - - const zapsConnect = zaps.connect(signer); - const overrides: { value?: BigNumber } = {}; - if (tokenAddr === ETH) { - overrides.value = ethers.utils.parseEther(tokenAmount); - } - - const minTokenReceived = parseFloat(guaranteedPrice) * parseFloat(tokenAmount); - const minTokenReceivedWei = ethers.utils.parseUnits( - minTokenReceived.toString(), - 18 - ); - - if (signerAddress == zapInfor) { - await expect(zapsConnect.zapIn( - tokenAddr, - sellAmount, - toTokenAddr, - minTokenReceivedWei, - ZEROEX_EXCHANGE_PROXY, - swapCallData, - overrides - )) - .to.emit(zapsConnect, "ZappedIn"); - } else { - await expect(zapsConnect.zapInFor( - tokenAddr, - sellAmount, - toTokenAddr, - minTokenReceivedWei, - zapInfor, - ZEROEX_EXCHANGE_PROXY, - swapCallData, - overrides - )) - .to.emit(zapsConnect, "ZappedIn"); - } - - // Get balance after zap - const balanceAfter = await getBalance(toTokenContract, zapInfor); - - expect(balanceAfter.gte(minTokenReceivedWei)).to.be.true; - expect(balanceAfter).to.gte(minTokenReceivedWei.add(balanceBefore)); -} - -async function zapInVault( - signer: Signer, - zaps: TempleZaps, - tokenAddr: string, - tokenAmount: string, - vaultAddr: string, - zapInFor: string, - quoteData: ZeroExQuote -) { - const tokenContract = ERC20__factory.connect(tokenAddr, signer); - const templeToken = ERC20__factory.connect(TEMPLE, signer); - - let symbol; - let decimals; - if (tokenAddr === ETH) { - symbol = 'ETH'; - decimals = 18; - } else { - symbol = await tokenContract.symbol(); - decimals = await tokenContract.decimals(); - } - - // Get TEMPLE balance before zap - const signerAddress = await signer.getAddress(); - const balanceBefore = await getBalance(templeToken, signerAddress); - - // Approve token - if (tokenAddr !== ETH) { - await tokenContract.approve( - zaps.address, - ethers.utils.parseUnits(tokenAmount, decimals) - ); - } - - // Get quote from 0x API - let swapCallData, price, guaranteedPrice; - const sellAmount = ethers.utils.parseUnits(tokenAmount, decimals).toString(); - - if (tokenAddr === FRAX) { - guaranteedPrice = '0.99'; - swapCallData = '0x'; - } else { - if (quoteData == undefined) { - throw Error("Missing quote data"); - } - - - ({ swapCallData, price, guaranteedPrice } = quoteData); - console.log(`Price of ${symbol} in FRAX: ${price}`); - } - - // Do zap - const zapsConnect = zaps.connect(signer); - const overrides: { value?: BigNumber } = {}; - if (tokenAddr === ETH) { - overrides.value = ethers.utils.parseEther(tokenAmount); - } - - const sellAmountBN = BigNumber.from(sellAmount); - const feePerTempleScaledPerHour = await joiningFee.calc(await vault.firstPeriodStartTimestamp(), await vault.periodDuration(), vault.address); - /////// - const fee = sellAmountBN.mul(feePerTempleScaledPerHour).div(toAtto(1)); - // convert to approximate temple value for later checks - const minExpectedTemple = await getExpectedTemple( - signer, - guaranteedPrice, - tokenAmount, - await templeRouter.tokenPair(FRAX) - ); - const minFraxReceived = parseFloat(guaranteedPrice) * parseFloat(tokenAmount); - const minFraxReceivedWei = ethers.utils.parseUnits( - minFraxReceived.toString(), - 18 - ); - const vaultExposureTokenBefore = await templeExposure.balanceOf(vault.address); - const vaultedTempleAmountBefore = await getBalance(templeToken, vaultedTemple.address) - await zaps.setSupportedStables([FRAX, FEI], [true, true]); - if (equalAddresses(signerAddress, zapInFor)) { - await expect(zapsConnect.zapInVault( - tokenAddr, - sellAmount, - minExpectedTemple, - FRAX, - minFraxReceivedWei, - vaultAddr, - ZEROEX_EXCHANGE_PROXY, - swapCallData, - overrides - )) - .to.emit(zapsConnect, "ZappedTempleInVault"); - } else { - await expect(zapsConnect.zapInVaultFor( - tokenAddr, - sellAmount, - minExpectedTemple, - FRAX, - minFraxReceivedWei, - vaultAddr, - zapInFor, - ZEROEX_EXCHANGE_PROXY, - swapCallData, - overrides - )) - .to.emit(zapsConnect, "ZappedTempleInVault"); - } - - - expect(await templeExposure.balanceOf(vault.address)).to.gte(vaultExposureTokenBefore.add(minExpectedTemple)); - expect(await getBalance(templeToken, vaultedTemple.address)).to.gte(vaultedTempleAmountBefore.add(minExpectedTemple)); - expect(await vault.balanceOf(zapInFor)).to.gte(minExpectedTemple.sub(fee)); - expect(await getBalance(templeToken, vaultedTemple.address)).to.gte(minExpectedTemple); - - // Get Temple balance after zap - const balanceAfter = await getBalance(templeToken, signerAddress); - expect(balanceAfter).to.gte(balanceBefore); -} - -async function getExpectedTemple( - signer: Signer, - guaranteedPrice: string, - tokenAmount: string, - pair: string -): Promise { - const ammContract = TempleStableAMMRouter__factory.connect(TEMPLE_STABLE_ROUTER, signer); - const minFraxReceived = parseFloat(guaranteedPrice) * parseFloat(tokenAmount); - const minFraxReceivedWei = ethers.utils.parseUnits( - minFraxReceived.toString(), - 18 - ); - const quote = await ammContract.swapExactStableForTempleQuote(pair, minFraxReceivedWei); - return quote; -} - -async function approveContract( - fromToken: string, - fromAmountBN: BigNumber, - fromTokenDecimals: number, - signer: Signer, - contractAddress: string -) { - const fromTokenContract = ERC20__factory.connect(fromToken, signer); - // approve zaps - if (fromToken !== ETH) { - await fromTokenContract.approve( - contractAddress, - fromAmountBN, - ); - } -} - -async function getBalance(token: ERC20, owner: string) { - if (equalAddresses(token.address, ETH)) { - return await token.provider.getBalance(owner); - } - return await token.balanceOf(owner); -} - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -async function getLatestBlockNumberWithEnoughConfirmations(): Promise { - const provider = new ethers.providers.StaticJsonRpcProvider(process.env.TESTS_MAINNET_RPC_URL); - const blockNumber = await provider.getBlockNumber() - 5; - return blockNumber; -} From 5864f3782f4c8a13a9d79ca9e1d8d9a2a634404f Mon Sep 17 00:00:00 2001 From: Frontier <103474701+frontier159@users.noreply.github.com> Date: Sat, 30 Mar 2024 07:51:32 +1300 Subject: [PATCH 04/35] feat: epoch-23c (#1001) --- apps/dapp/src/constants/env/production.tsx | 1 + protocol/scripts/deploys/helpers.ts | 2 ++ .../deploys/mainnet/team-payments/deploy.ts | 2 +- .../mainnet/team-payments/json/epoch23c.json | 20 +++++++++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 protocol/scripts/deploys/mainnet/team-payments/json/epoch23c.json diff --git a/apps/dapp/src/constants/env/production.tsx b/apps/dapp/src/constants/env/production.tsx index a53fdf236..366cd394d 100644 --- a/apps/dapp/src/constants/env/production.tsx +++ b/apps/dapp/src/constants/env/production.tsx @@ -50,6 +50,7 @@ const env: Environment = { { name: 'Epoch 22c', address: '0x57cE4E4dcA88A5E1f3788D8e47c46687F91B6AfE' }, { name: 'Epoch 23a', address: '0xC05C4123a4870293521980640ddFE37eb5c32dB6' }, { name: 'Epoch 23b', address: '0xBd64922E156175972356D4Ef362b22a6806D61Ff' }, + { name: 'Epoch 23c', address: '0x5e6E4E6Eb6D45e4bC7837e483F106AE25FA52472' }, ], temple: '0x470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b7', templeStaking: '0x4D14b24EDb751221B3Ff08BBB8bd91D4b1c8bc77', diff --git a/protocol/scripts/deploys/helpers.ts b/protocol/scripts/deploys/helpers.ts index 3beae4bb3..d8aa94e8a 100644 --- a/protocol/scripts/deploys/helpers.ts +++ b/protocol/scripts/deploys/helpers.ts @@ -38,6 +38,7 @@ interface TeamPayments { TEMPLE_TEAM_EPOCH_22C: string; TEMPLE_TEAM_EPOCH_23A: string; TEMPLE_TEAM_EPOCH_23B: string; + TEMPLE_TEAM_EPOCH_23C: string; } export interface DeployedContracts { @@ -303,6 +304,7 @@ export const DEPLOYED_CONTRACTS: { [key: string]: DeployedContracts } = { TEMPLE_TEAM_EPOCH_22C: '0x57cE4E4dcA88A5E1f3788D8e47c46687F91B6AfE', TEMPLE_TEAM_EPOCH_23A: '0xC05C4123a4870293521980640ddFE37eb5c32dB6', TEMPLE_TEAM_EPOCH_23B: '0xBd64922E156175972356D4Ef362b22a6806D61Ff', + TEMPLE_TEAM_EPOCH_23C: '0x5e6E4E6Eb6D45e4bC7837e483F106AE25FA52472', }, TEMPLE_TEAM_PAYMENTS_IMPLEMENTATION: '', diff --git a/protocol/scripts/deploys/mainnet/team-payments/deploy.ts b/protocol/scripts/deploys/mainnet/team-payments/deploy.ts index 80fb99110..f524361ed 100644 --- a/protocol/scripts/deploys/mainnet/team-payments/deploy.ts +++ b/protocol/scripts/deploys/mainnet/team-payments/deploy.ts @@ -6,7 +6,7 @@ import { expectAddressWithPrivateKey, toAtto, } from '../../helpers'; -import snapshot from './json/epoch23b.json'; +import snapshot from './json/epoch23c.json'; // TODO: Add command line arguments for json allocations file async function main() { diff --git a/protocol/scripts/deploys/mainnet/team-payments/json/epoch23c.json b/protocol/scripts/deploys/mainnet/team-payments/json/epoch23c.json new file mode 100644 index 000000000..95a56d473 --- /dev/null +++ b/protocol/scripts/deploys/mainnet/team-payments/json/epoch23c.json @@ -0,0 +1,20 @@ +{ + "0x0d27AD08BC0Fd7b35a075df3373273de12d0E830": 600, + "0xE58C06c3372687039140ceb64cB05f78D71fA133": 2000, + "0x62370003cEbacd6415d32375095FFc8AB7238eBC": 250, + "0x072d76b501E364FCA58B6A7fe16a88c74D64924c": 500, + "0xB8C400E4E9360ae7a3480A2F63e2A5aA85696148": 250, + "0xe07d083d4A8810E5b35300a6De579fB2AF525e2F": 6000, + "0x14d62c8faC60d71714F54bd3f7dF18433475968b": 12000, + "0xDBdB110c59881bE60e12e5F6c54032dA8cA814CE": 8500, + "0xBc099EAdc19e672b454fF6a06d08c541B3a1E850": 18000, + "0x07dA99dff5F996FaD9FCe0e15a20edC4DBeAe028": 15200, + "0x1cCbe98Ce51d3ba16A5F29b7f970c3e101ded67f": 10000, + "0xDd10BE8f410CEa5340343aE676eccD8D68CEC239": 14400, + "0xe345e9605391c13Fd2502e7141D54b752AaDB184": 12000, + "0x038D946DD8488237D8E710a45b6E801F1Ee4dc01": 14000, + "0x9F7eE729DDE0D95ffCf69F5606D534Ee47b303C0": 20000, + "0x6e85a8c802dcA39bEB4cE6Eb4C6acD1eB2742564": 10000, + "0x588282ADA5B9D872d0eBF506c5C1b541e2a60BBa": 14000, + "0x97Ec4001aD1d2a1FBb581ea34C5C0Bd4a210C25C": 31100 +} \ No newline at end of file From 7e5f990426ce1865d810d7d72c4329965194c355 Mon Sep 17 00:00:00 2001 From: Pocin <8642344+pocin@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:54:28 +0200 Subject: [PATCH 05/35] fix: chart label formatting and pagination strategy (#979) * fix: consistent chart metric name formatting * fix: strategyDailySnapshots pagination strategy * style: run prettier --- .../Chart/V2StrategyMetricsChart.tsx | 24 ++++++++++++++----- .../hooks/use-dashboardv2-daily-snapshots.ts | 23 +++++++----------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx index cfc12b81b..1f47d7b80 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx @@ -72,17 +72,29 @@ const V2StrategyMetricsChart: React.FC<{ selectedInterval: ChartSupportedTimeInterval; }> = ({ dashboardData, selectedMetric, selectedInterval }) => { // uncamel-case the metric names - const formatMetricName = (name: string) => - // format only the selected metric name (the selected metric or all lines in a TRV chart) - name === selectedMetric || isTRVDashboard(dashboardData.key) - ? name + const formatMetricName = (name: string) => { + // format only + // - the selected metric + // - all lines in TRV chart + // - netDebt chart components + // the remaining cases are individual debt tokens (sUSDe, sDAI, rsETH, ...) + // which we keep as is + if ( + name === selectedMetric || + isTRVDashboard(dashboardData.key) || + selectedMetric === 'netDebtUSD' + ) { + return ( + name // // insert a space before all caps .replace(/([A-Z][a-z])/g, ' $1') // // uppercase the first character .replace(/^./, (str) => str.toUpperCase()) .replace(/USD$/, '') - : // Individual debt token tickers remain unchanged - name; + ); + } + return name; + }; const tooltipValuesFormatter = (value: number, name: string) => [ numberFormatter.format(value), formatMetricName(name), diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts index 59bf4944e..a939b1199 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts @@ -82,23 +82,18 @@ async function fetchStrategyHourlySnapshots() { async function fetchStrategyDailySnapshots() { const now = new Date(); // the largest value from the chart time range selector 1W | 1M | 1Y - let since = Math.floor((now.getTime() - ONE_YEAR_MS) / 1000).toString(); + const since = Math.floor((now.getTime() - ONE_YEAR_MS) / 1000).toString(); const result: V2StrategySnapshot[] = []; - const itemsPerPage = 1000; // current max page size + const MAX_PAGE_SIZE = 1000; // current max page size + let skip = 0; while (true) { - // we could be missing data with this pagination strategy if - // the dataset contain snapshots for different strats - // created at the exact same timestamp - // and all such snapshots do not fit in the same page - // imho very unlikely, but possible? - // solution would be to use timestamp_GTE: ${since} - // and deduplicate two consecutive pages const query = ` query { - strategyDailySnapshots(first: ${itemsPerPage}, + strategyDailySnapshots(first: ${MAX_PAGE_SIZE}, orderBy: timestamp, orderDirection: asc, - where: {timestamp_gt: ${since}}) { + where: {timestamp_gt: ${since}} + skip: ${skip}) { ${QUERIED_FIELDS} } }`; @@ -106,11 +101,9 @@ async function fetchStrategyDailySnapshots() { const itemsOnPage = page.data?.strategyDailySnapshots.length ?? 0; if (page.data) { result.push(...page.data.strategyDailySnapshots); - const latestSnapshot = page.data.strategyDailySnapshots.at(-1); - if (!latestSnapshot) break; - since = latestSnapshot.timestamp; + skip += itemsOnPage } - if (itemsOnPage < itemsPerPage) { + if (itemsOnPage < MAX_PAGE_SIZE) { break; } } From a23e7e62be53b6a8a49b83637e43919ab6e4f17e Mon Sep 17 00:00:00 2001 From: frost ostrich Date: Wed, 13 Dec 2023 11:21:35 +1100 Subject: [PATCH 06/35] feat: add safe admin page draft --- apps/dapp/package.json | 3 + .../src/components/Pages/Safe/admin/index.tsx | 111 ++++++++++++++++++ apps/dapp/src/main.tsx | 2 + 3 files changed, 116 insertions(+) create mode 100644 apps/dapp/src/components/Pages/Safe/admin/index.tsx diff --git a/apps/dapp/package.json b/apps/dapp/package.json index 1a5d27092..9f6d76c80 100644 --- a/apps/dapp/package.json +++ b/apps/dapp/package.json @@ -18,9 +18,12 @@ }, "dependencies": { "@balancer-labs/sdk": "^1.0.4", + "@safe-global/api-kit": "^2.0.0", + "@safe-global/protocol-kit": "^2.0.0", "@safe-global/safe-apps-provider": "^0.18.0", "@safe-global/safe-apps-sdk": "^8.1.0", "@tanstack/react-query": "^4.36.1", + "@safe-global/safe-core-sdk-types": "^3.0.1", "@tippyjs/react": "^4.2.6", "@web3-onboard/coinbase": "^2.2.5", "@web3-onboard/core": "^2.20.5", diff --git a/apps/dapp/src/components/Pages/Safe/admin/index.tsx b/apps/dapp/src/components/Pages/Safe/admin/index.tsx new file mode 100644 index 000000000..3b38e089a --- /dev/null +++ b/apps/dapp/src/components/Pages/Safe/admin/index.tsx @@ -0,0 +1,111 @@ +import styled, { css } from 'styled-components'; + +import { tabletAndAbove } from 'styles/breakpoints'; +import EllipsisLoader from 'components/EllipsisLoader'; +import Tooltip, { TooltipIcon } from 'components/Tooltip/Tooltip'; +import { Input } from 'components/Pages/Core/NewUI/HomeInput'; +import { Button } from 'components/Button/Button'; +import { useEffect, useState } from 'react'; +import { useDebouncedCallback } from 'use-debounce'; +import { useWallet } from 'providers/WalletProvider'; +import { ethers } from "ethers"; +import { EthersAdapter } from '@safe-global/protocol-kit'; +import { useConnectWallet } from '@web3-onboard/react'; + +const SafeAdmin = () => { + + const [safeTxId, setSafeTxId] = useState(undefined); + + const [{ wallet }] = useConnectWallet(); + const { walletAddress, signer } = useWallet(); + + useEffect(() => { + if (!wallet) return; + const ethersProvider = new ethers.providers.Web3Provider(wallet.provider); + // const ethAdapter = new EthersAdapter({ + // ethers, + // signerOrProvider: ethersProvider.getSigner() + // }) + + }, [wallet]); + + + + console.log('walletAddress', walletAddress); + + return ( + + +

Safe App

+ +

Enter the Safe Tx Id you want to sign or execute

+ +

Remove liquidity from balancer pool receiving both

+

Treasury Price Floor is expected to be within bounds of multisig set range.

+

+ Withdraw and unwrap BPT tokens from Aura staking and send to balancer pool to receive both tokens. +

+ + } + > + +
+
+ + { + setSafeTxId(e); + }, 300)} + /> +