Discussion for EIP2535 Diamonds

I don’t fully understand exactly how the loupe functions are implemented. Are they an interface on the diamond itself, or implemented in a facet?

If the loupe functions are provided by a facet:

  • Can they be removed by diamondCut?
  • How do they get information from diamondCut? Reading the storage during a delegatecall?