src/optimizer/transforms/char-case-insensitive-lowercase-transform.js
function getSurrogatePairFromCodePoint(codePoint) {
  const lead = Math.floor((codePoint - 0x10000) / 0x400) + 0xd800;
  const trail = (codePoint - 0x10000) % 0x400 + 0xdc00;
  return {
    lead: lead.toString(16),
    trail: trail.toString(16)
  };
}
function getSurrogatePairFromCodePoint(codePoint) {
  const lead = Math.floor((codePoint - 0x10000) / 0x400) + 0xd800;
  const trail = (codePoint - 0x10000) % 0x400 + 0xdc00;
  return {
    lead: lead.toString(16),
    trail: trail.toString(16)
  };
}
Converts a code point to a surrogate pair.
Conversion algorithm is taken from The Unicode Standard 3.0 Section 3.7
(https://www.unicode.org/versions/Unicode3.0.0/ch03.pdf)
@param {number} codePoint - Between 0x10000 and 0x10ffff
@returns {{lead: string, trail: string}}