<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _ParseContainerConfigJSON(self, parser_mediator, file_object):
 """Extracts events from a Docker container configuration file. The path of each container config file is: DOCKER_DIR/containers/<container_id>/config.json Args: parser_mediator (ParserMediator):
 mediates interactions between parsers and other components, such as storage and dfvfs. file_object (dfvfs.FileIO):
 a file-like object. Raises: UnableToParseFile: when the file is not a valid container config file. """

    file_content = file_object.read()
    file_content = codecs.decode(file_content, self._ENCODING)

    json_dict = json.loads(file_content)

    if 'Driver' not in json_dict:
      raise errors.UnableToParseFile(
          'not a valid Docker container configuration file, ' 'missing '
          '\'Driver\' key.')

    container_id_from_path = self._GetIdentifierFromPath(parser_mediator)
    container_id_from_json = json_dict.get('ID', None)
    if not container_id_from_json:
      raise errors.UnableToParseFile(
          'not a valid Docker layer configuration file, the \'ID\' key is '
          'missing from the JSON dict (should be {0:s})'.format(
              container_id_from_path))

    if container_id_from_json != container_id_from_path:
      raise errors.UnableToParseFile(
          'not a valid Docker container configuration file. The \'ID\' key of '
          'the JSON dict ({0:s}) is different from the layer ID taken from the'
          ' path to the file ({1:s}) JSON file.)'.format(
              container_id_from_json, container_id_from_path))

    if 'Config' in json_dict and 'Hostname' in json_dict['Config']:
      container_name = json_dict['Config']['Hostname']
    else:
      container_name = 'Unknown container name'

    event_data = DockerJSONContainerEventData()
    event_data.container_id = container_id_from_path
    event_data.container_name = container_name

    if 'State' in json_dict:
      if 'StartedAt' in json_dict['State']:
        event_data.action = 'Container Started'

        timestamp = timelib.Timestamp.FromTimeString(
            json_dict['State']['StartedAt'])
        event = time_events.TimestampEvent(
            timestamp, definitions.TIME_DESCRIPTION_START)
        parser_mediator.ProduceEventWithEventData(event, event_data)

      if 'FinishedAt' in json_dict['State']:
        if json_dict['State']['FinishedAt'] != '0001-01-01T00:00:00Z':
          event_data.action = 'Container Finished'

          # If the timestamp is 0001-01-01T00:00:00Z, the container
          # is still running, so we don't generate a Finished event
          timestamp = timelib.Timestamp.FromTimeString(
              json_dict['State']['FinishedAt'])
          event = time_events.TimestampEvent(
              timestamp, definitions.TIME_DESCRIPTION_END)
          parser_mediator.ProduceEventWithEventData(event, event_data)

    created_time = json_dict.get('Created', None)
    if created_time:
      event_data.action = 'Container Created'

      timestamp = timelib.Timestamp.FromTimeString(created_time)
      event = time_events.TimestampEvent(
          timestamp, definitions.TIME_DESCRIPTION_ADDED)
      parser_mediator.ProduceEventWithEventData(event, event_data)