     reader.readAsText file
 
   subjectsFromManifest: (data, errors, fileName) ->
-    console.log(data, errors, fileName)
     metadatas = for rawData in data
       cleanData = {}
       for key, value of rawData

        subjects.push {locations, metadata}

    @state.manifests[fileName] = {errors, subjects}
    @forceUpdate()

  _findFilesInMetadata: (metadata) ->
    filesInMetadata = []
    for key, value of metadata
      filesInValue = value.match? ///([^#{INVALID_FILENAME_CHARS.join ''}]+(?:#{VALID_SUBJECT_EXTENSIONS.join '|'}))///gi
      if filesInValue?
        filesInMetadata.push filesInValue...
    filesInMetadata

      <hr />

      <p>
        <UploadDropTarget accept={"text/csv, text/tab-separated-values, image/*#{", video/*" if isAdmin()}"} multiple onSelect={@handleFileSelection}>
          <strong>Drag-and-drop or click to upload manifests and subject images here.</strong><br />
          Manifests must be <code>.csv</code> or <code>.tsv</code>. The first row should define metadata headers. All other rows should include at least one reference to an image filename in the same directory as the manifest.<br />
          Headers that begin with "#" or "//" denote private fields that will not be visible to classifiers.<br />
