export function decodeVarint(buffer, offset) { let res = 0; let shift = 0; let byte = 0; do { if (offset >= buffer.length) { throw new RangeError("Index out of bound decoding varint"); } byte = buffer[offset++]; const multiplier = 2 ** shift; const thisByteValue = (byte & 0x7f) * multiplier; shift += 7; res = res + thisByteValue; } while (byte >= 0x80); return { value: res, length: shift / 7 }; }