LOTS OF SPOILERS HERE!