USDC deposited to PerpDepository.sol are irretrievable and effectively causes UDX to become undercollateralized
PerpDepository rebalances negative PNL into USDC holdings. This preserves the delta neutrality of the system by exchanging base to quote. This is problematic though as once it is in the vault as USDC it can never be withdrawn. The effect is that the delta neutral position can never be liquidated but the USDC is inaccessible so UDX is effectively undercollateralized.\\n`_processQuoteMint`, `_rebalanceNegativePnlWithSwap` and `_rebalanceNegativePnlLite` all add USDC collateral to the system. There were originally two ways in which USDC could be removed from the system. The first was positive PNL rebalancing, which has now been deactivated. The second is for the owner to remove the USDC via `withdrawInsurance`.\\n```\\nfunction withdrawInsurance(uint256 amount, address to)\\n    external\\n    nonReentrant\\n    onlyOwner\\n{\\n    if (amount == 0) {\\n        revert ZeroAmount();\\n    }\\n\\n    insuranceDeposited -= amount;\\n\\n    vault.withdraw(insuranceToken(), amount);\\n    IERC20(insuranceToken()).transfer(to, amount);\\n\\n    emit InsuranceWithdrawn(msg.sender, to, amount);\\n}\\n```\\n\\nThe issue is that `withdrawInsurance` cannot actually redeem any USDC. Since insuranceDeposited is a uint256 and is decremented by the withdraw, it is impossible for more USDC to be withdrawn then was originally deposited.\\nThe result is that there is no way for the USDC to ever be redeemed and therefore over time will lead to the system becoming undercollateralized due to its inaccessibility.
Allow all USDC now deposited into the insurance fund to be redeemed 1:1
UDX will become undercollateralized and the ecosystem will spiral out of control
```\\nfunction withdrawInsurance(uint256 amount, address to)\\n    external\\n    nonReentrant\\n    onlyOwner\\n{\\n    if (amount == 0) {\\n        revert ZeroAmount();\\n    }\\n\\n    insuranceDeposited -= amount;\\n\\n    vault.withdraw(insuranceToken(), amount);\\n    IERC20(insuranceToken()).transfer(to, amount);\\n\\n    emit InsuranceWithdrawn(msg.sender, to, amount);\\n}\\n```\\n