Cache page based on geo

I need to create a rule like this.

  1. It should affect the dynamic pages
  2. It should exclude the admin area (/admin)
  3. If the user has cookie named “session” is set, ignore such requests.
  4. Cache this page based on user’s country. So all user from US see same content A while all users CA will see same content B.

Is it possible to do so in Cloudflare?