docs: def tls_meta_data(self):
          """Pull out the TLS metadata for each flow in the input_stream"""
  
          # For each flow process the contents
          for flow in self.input_stream:
  
              # Just TCP for now
              if flow['protocol'] != 'TCP':
                  continue
  
              # Client to Server
              if flow['direction'] == 'CTS':
  
                  # Try to process the payload as a set of TLS records
                  try:
                      tls_records, bytes_consumed = dpkt.ssl.tls_multi_factory(flow['payload'])
                      if bytes_consumed != len(flow['payload']):
                          logger.warning('Incomplete TLS record at the end...')
  
                      # Process the TLS records
                      flow['tls'] = {'type':'TLS_CTS', 'data':{'tls_records': tls_records, 'uri':None, 'headers':None}}
                  except (dpkt.dpkt.NeedData, dpkt.dpkt.UnpackError, dpkt.ssl.SSL3Exception):
                      flow['tls'] = None
  
              # Server to Client
              else:
                  try:
                      tls_records, bytes_consumed = dpkt.ssl.tls_multi_factory(flow['payload'])
                      if bytes_consumed != len(flow['payload']):
                          logger.warning('Incomplete TLS record at the end...')
  
                      # Process the TLS records
                      flow['tls'] = {'type':'TLS_STC', 'data':{'tls_records': tls_records, 'uri':None, 'headers':None}}
                  except (dpkt.dpkt.NeedData, dpkt.dpkt.UnpackError, dpkt.ssl.SSL3Exception):
                      flow['tls'] = None
  
              # All done
              yield flow