function extendProps(props, options) {
    if (props === void 0) {
      props = {};
    }

    if (options === void 0) {
      options = {};
    }

    for (var key in options) {
      if (options.hasOwnProperty(key)) {
        var value = options[key];
        var key2 = key.toLowerCase();
        var value2 = value;

        if (knownProps[key2]) {
          value2 = value.toLowerCase();
        }

        try {
          value2 = JSON.parse(value);
        } catch (e) {}

        if (typeof value === 'undefined' || value === null) {
          // null and undefined are values specific to JSON (no special meaning
          // in editorconfig) & should just be returned as regular strings.
          value2 = String(value);
        }

        props[key2] = value2;
      }
    }

    return props;
  }
/**}');
    return fnmatch_1.default(filepath, glob, matchOptions);
  }

  function getConfigFileNames(filepath, options) {
    var paths = [];

    do {
      filepath = path.dirname(filepath);
      paths.push(path.join(filepath, options.config));
    } while (filepath !== options.root);

    return paths;
  }

  function processMatches(matches, version) {
    // Set indent_size to 'tab' if indent_size is unspecified and
    // indent_style is set to 'tab'.
    if ('indent_style' in matches && matches.indent_style === 'tab' && !('indent_size' in matches) && semver.gte(version, '0.10.0')) {
      matches.indent_size = 'tab';
    } // Set tab_width to indent_size if indent_size is specified and
    // tab_width is unspecified


    if ('indent_size' in matches && !('tab_width' in matches) && matches.indent_size !== 'tab') {
      matches.tab_width = matches.indent_size;
    } // Set indent_size to tab_width if indent_size is 'tab'


    if ('indent_size' in matches && 'tab_width' in matches && matches.indent_size === 'tab') {
      matches.indent_size = matches.tab_width;
    }

    return matches;
  }

  function processOptions(options, filepath) {
    if (options === void 0) {
      options = {};
    }

    return {
      config: options.config || '.editorconfig',
      version: options.version || package_json_1.default.version,
      root: path.resolve(options.root || path.parse(filepath).root)
    };
  }

  function buildFullGlob(pathPrefix, glob) {
    switch (glob.indexOf('/')) {
      case -1:
        glob = '*