anchor.diff:  const int uint32Max = 2 ^ 32 - 1;
   const int uint64Max = 2 ^ 64 - 1;
   
  -int cborEncodeUint8(int value, ByteData buffer, int bufferSize) {
  +int cborEncodeUint8(int value, ByteData buffer, int bufferSize,
  +    [int offset = 0]) {
     assert(value >= 0 && value <= uint8Max);
     if (value <= 23) {
       if (bufferSize >= 1) {
  -      buffer.setUint8(0, value);
  +      buffer.setUint8(0, value + offset);
         return 1;
       }
     } else {
       if (bufferSize >= 2) {
  -      buffer.setUint8(0, 0x18);
  +      buffer.setUint8(0, 0x18 + offset);
         buffer.setUint8(1, value);
         return 2;
       }
  
positive.code:   else
      return cborEncodeNegint64(value, buffer, bufferSize);
  }
  
negative.code:   }
  }
  
  int cborEncodeUint64(int value, ByteData buffer, int bufferSize,
      [int offset = 0]) {
    assert(value >= 0 && value <= uint64Max);
    if (bufferSize >= 9) {
      buffer.setUint8(0, 0x1B + offset);
      buffer.setUint64(1, value);
      return 9;
    } else {
  