McCrory signs $21.1B budget deal