Re-entrancy + flash loan attack can invalidate price check
The `UniProxy` contract has a price manipulation protection:\\n```\\nif (twapCheck || positions[pos].twapOverride) {\\n  // check twap\\n  checkPriceChange(\\n    pos,\\n    (positions[pos].twapOverride ? positions[pos].twapInterval : twapInterval),\\n    (positions[pos].twapOverride ? positions[pos].priceThreshold : priceThreshold)\\n  );\\n}\\n```\\n\\nBut after that, the tokens are transferred from the user, if the token transfer allows an attacker to hijack the call-flow of the transaction inside, the attacker can manipulate the Uniswap price there, after the check happened. The Hypervisor's `deposit` function itself is vulnerable to the flash-loan attack.
Make sure the price does not change before the `Hypervisor.deposit` call. For example, the token transfers can be made at the beginning of the `UniProxy.deposit` function.
```\\nif (twapCheck || positions[pos].twapOverride) {\\n  // check twap\\n  checkPriceChange(\\n    pos,\\n    (positions[pos].twapOverride ? positions[pos].twapInterval : twapInterval),\\n    (positions[pos].twapOverride ? positions[pos].priceThreshold : priceThreshold)\\n  );\\n}\\n```\\n