docs: def parse_template(template_str):
      """
      Parse the SAM template.
  
      :param template_str: A packaged YAML or json CloudFormation template
      :type template_str: str
      :return: Dictionary with keys defined in the template
      :rtype: dict
      """
      try:
          # PyYAML doesn't support json as well as it should, so if the input
          # is actually just json it is better to parse it with the standard
          # json parser.
          return json.loads(template_str, object_pairs_hook=OrderedDict)
      except ValueError:
          yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, _dict_constructor)
          yaml.SafeLoader.add_multi_constructor('!', intrinsics_multi_constructor)
          return yaml.safe_load(template_str)