I spent way too much time on this.