anchor.diff:  -type iso8601_time() :: binary().
   -type http_path() :: binary().
   -type sha_hash64() :: binary().
  --type erlang_time() :: {calendar:date(), calendar:time()}.
  +-type erlang_time() :: {calendar_date(), calendar_time()}.
   -type private_key() :: binary().
   -type header_name() :: binary().
   -type header_value() :: binary() | 'undefined'.
  
positive.code: 
  %% @doc Canonicalize an HTTP request path by removing doubled slashes
  %% and trailing slash (except for case of root path).
  canonical_path(Path = <<"/">>) ->
      Path;
  canonical_path(Path) ->
  
negative.code: hash_file(F) ->
      hash_file(F, crypto:sha_init()).
  
  -spec hash_file(file:io_device(),binary()) -> sha_hash64().
  hash_file(F, Ctx) ->
      case io:get_chars(F, "", ?buf_size) of
          eof ->
  