| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | var uncurryThis = require('../internals/function-uncurry-this');var toObject = require('../internals/to-object');var floor = Math.floor;var charAt = uncurryThis(''.charAt);var replace = uncurryThis(''.replace);var stringSlice = uncurryThis(''.slice);var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;// `GetSubstitution` abstract operation// https://tc39.es/ecma262/#sec-getsubstitutionmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {  var tailPos = position + matched.length;  var m = captures.length;  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;  if (namedCaptures !== undefined) {    namedCaptures = toObject(namedCaptures);    symbols = SUBSTITUTION_SYMBOLS;  }  return replace(replacement, symbols, function (match, ch) {    var capture;    switch (charAt(ch, 0)) {      case '$': return '$';      case '&': return matched;      case '`': return stringSlice(str, 0, position);      case "'": return stringSlice(str, tailPos);      case '<':        capture = namedCaptures[stringSlice(ch, 1, -1)];        break;      default: // \d\d?        var n = +ch;        if (n === 0) return match;        if (n > m) {          var f = floor(n / 10);          if (f === 0) return match;          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);          return match;        }        capture = captures[n - 1];    }    return capture === undefined ? '' : capture;  });};
 |