98   size_t bytes_absorbed = 0;
 
   99   auto absorb = [&](std::span<const uint8_t> bytes) {
 
  103         sink.insert(sink.end(), bytes.begin(), bytes.end());
 
  105      bytes_absorbed += bytes.size();
 
  109   auto encode_string_and_absorb = [&](std::span<const uint8_t> bytes) {
 
  115   auto absorb_padding = [&](
size_t padding_bytes) {
 
  116      for(
size_t i = 0; i < padding_bytes; ++i) {
 
  117         const uint8_t zero_byte = 0;
 
  118         absorb({&zero_byte, 1});
 
  125   (encode_string_and_absorb(byte_strings), ...);
 
  126   absorb_padding(padding_mod - (bytes_absorbed % padding_mod));
 
  128   return bytes_absorbed;