'Retrieve and return a dictionary that includes a list of dictionaries that each contain all of the
information needed to install the list of repositories defined by the received encoded_str.'

@web.json
def get_required_repo_info_dict(self, trans, encoded_str=None):

    repo_info_dict = {}
    if encoded_str:
        encoded_required_repository_str = encoding_util.tool_shed_decode(encoded_str)
        encoded_required_repository_tups = encoded_required_repository_str.split(encoding_util.encoding_sep2)
        decoded_required_repository_tups = []
        for encoded_required_repository_tup in encoded_required_repository_tups:
            decoded_required_repository_tups.append(encoded_required_repository_tup.split(encoding_util.encoding_sep))
        encoded_repository_ids = []
        changeset_revisions = []
        for required_repository_tup in decoded_required_repository_tups:
            (tool_shed, name, owner, changeset_revision, prior_installation_required, only_if_compiling_contained_td) = common_util.parse_repository_dependency_tuple(required_repository_tup)
            repository = repository_util.get_repository_by_name_and_owner(trans.app, name, owner)
            encoded_repository_ids.append(trans.security.encode_id(repository.id))
            changeset_revisions.append(changeset_revision)
        if (encoded_repository_ids and changeset_revisions):
            repo_info_dict = json.loads(self.get_repository_information(trans, encoded_repository_ids, changeset_revisions))
    return repo_info_dict
