anchor.diff:  	raw_tlvs => [{0..255, binary()}]
   }.
   -export_type([proxy_info/0]).
  +
  +-type build_opts() :: #{
  +	checksum => crc32,
  +	padding => pos_integer() %% >= 3
  +}.
  +
  +%% Parsing.
   
   -spec parse(Data) -> {ok, proxy_info(), Data} | {error, atom()} when Data::binary().
   parse(<<"\r\n\r\n\0\r\nQUIT\n", Rest/bits>>) ->
  
positive.code: 	case Rest0 of
  		<<Subs:SubsLen/binary, Rest/bits>> ->
  			SSL0 = #{
  				client => client(<<Client>>),
  				verified => Verify =:= 0
  			},
  			case parse_ssl_tlv(Subs, SubsLen, SSL0) of
  
negative.code: %% PP2_TYPE_CRC32C.
  parse_tlv(<<16#3, TLVLen:16, CRC32C:32, Rest/bits>>, Len0, Info, Header) when TLVLen =:= 4 ->
  	Len = Len0 - TLVLen - 3,
  	BeforeLen = byte_size(Header) - Len - TLVLen,
  	<<Before:BeforeLen/binary, _:32, After:Len/binary>> = Header,
  	%% The initial CRC is erlang:crc32(<<"\r\n\r\n\0\r\nQUIT\n", 2:4, 1:4>>).
  	case erlang:crc32(1302506282, [Before, <<0:32>>, After]) of
  		CRC32C ->
  			parse_tlv(Rest, Len, Info, Header);
  		_ ->
  			{error, 'Failed CRC32C verification in PROXY protocol binary header. (PP 2.2)'}
  	end;
  