code: def match_client_preferences_with_provider_capabilities(self, client_preferences):
          # type: (oic.message.RegistrationRequest) -> Mapping[str, Union[str, List[str]]]
          
          matched_prefs = client_preferences.to_dict()
          for pref in ['response_types', 'default_acr_values']:
              if pref not in client_preferences:
                  continue
  
              capability = PREFERENCE2PROVIDER[pref]
              # only preserve the common values
              matched_values = find_common_values(client_preferences[pref], self.configuration_information[capability])
              # deal with space separated values
              matched_prefs[pref] = [' '.join(v) for v in matched_values]
  
          return matched_prefs
docs: Match as many as of the client preferences as possible.
          :param client_preferences: requested preferences from client registration request
          :return: the matched preferences selected by the provider