@canboat/canboatjs 2.0.0-beta2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/candumpjs CHANGED
@@ -67,8 +67,25 @@ channel.addListener('onMessage', (msg) => {
67
67
  var pgn = parseCanId(msg.id)
68
68
 
69
69
  pgn.timestamp = new Date().toISOString()
70
+
71
+ let sourceString = binToActisense(pgn, msg.data, msg.data.length)
70
72
 
71
- parser.parse({ pgn, length: msg.data.length, data: msg.data })
73
+ parser.parse({ pgn, length: msg.data.length, data: msg.data, sourceString })
72
74
  })
73
75
 
74
76
  channel.start()
77
+
78
+
79
+ function binToActisense(pgn, data, length) {
80
+ return (
81
+ pgn.timestamp +
82
+ `,${pgn.prio},${pgn.pgn},${pgn.src},${pgn.dst},${length},` +
83
+ new Uint32Array(data)
84
+ .reduce(function(acc, i) {
85
+ acc.push(i.toString(16));
86
+ return acc;
87
+ }, [])
88
+ .map(x => (x.length === 1 ? "0" + x : x))
89
+ .join(",")
90
+ );
91
+ }
package/bin/ydvr-file CHANGED
File without changes
package/lib/canbus.js CHANGED
@@ -84,7 +84,7 @@ function CanbusStream (options) {
84
84
  options.app.on(options.outEvent || 'nmea2000out', (msg) => {
85
85
  that.sendPGN(msg)
86
86
  })
87
- options.app.on('nmea2000JsonOut', (msg) => {
87
+ options.app.on(options.jsonOutEvent || 'nmea2000JsonOut', (msg) => {
88
88
  that.sendPGN(msg)
89
89
  })
90
90
  }
@@ -94,6 +94,9 @@ function CanbusStream (options) {
94
94
  this.socketCanWriter = null
95
95
  var hasWriter = spawn('sh', ['-c', 'which socketcan-writer'])
96
96
 
97
+ const setProviderError = this.setProviderError.bind(this)
98
+ const setProviderStatus = this.setProviderStatus.bind(this)
99
+
97
100
  hasWriter.on('close', code => {
98
101
  if ( code == 0 ) {
99
102
  debug('found socketcan-writer, starting...')
@@ -318,7 +321,7 @@ function readLine(that, line) {
318
321
 
319
322
  pgn.timestamp = new Date().toISOString()
320
323
 
321
- that.push({ pgn: pgn, length: len, data })
324
+ that.push({ pgn: pgn, length: len, data, sourceString: line })
322
325
  }
323
326
 
324
327
  CanbusStream.prototype._transform = function (chunk, encoding, done) {
package/lib/candevice.js CHANGED
@@ -88,7 +88,7 @@ class CanDevice extends EventEmitter {
88
88
  }
89
89
 
90
90
  if ( options.app ) {
91
- options.app.on('N2KAnalyzerOut', this.n2kMessage.bind(this))
91
+ options.app.on(options.analyzerOutEvent || 'N2KAnalyzerOut', this.n2kMessage.bind(this))
92
92
  }
93
93
  }
94
94
 
package/lib/fromPgn.js CHANGED
@@ -40,6 +40,7 @@ const maxInt64 = new Int64LE(0x7fffffff, 0xffffffff)
40
40
 
41
41
  const FORMAT_PLAIN = 0
42
42
  const FORMAT_COALESCED = 1
43
+ const RES_BINARY = 'Binary data'
43
44
 
44
45
  const FASTPACKET_INDEX = 0
45
46
  const FASTPACKET_SIZE = 1
@@ -301,11 +302,11 @@ class Parser extends EventEmitter {
301
302
  } else if ( _.isBuffer(data) ) {
302
303
  return this.parseBuffer(data, cb)
303
304
  } else {
304
- return this.parsePgnData(data.pgn, data.length, data.data, data.coalesced === true)
305
+ return this.parsePgnData(data.pgn, data.length, data.data, data.coalesced === true, cb, data.sourceString)
305
306
  }
306
307
  }
307
308
 
308
- parsePgnData(pgn, length, data, coalesced, cb) {
309
+ parsePgnData(pgn, length, data, coalesced, cb, sourceString) {
309
310
  try
310
311
  {
311
312
  var buffer = data
@@ -319,7 +320,7 @@ class Parser extends EventEmitter {
319
320
 
320
321
  var bv = new BitView(buffer);
321
322
  var bs = new BitStream(bv)
322
- const res = this._parse(pgn, bs, length, coalesced, cb);
323
+ const res = this._parse(pgn, bs, length, coalesced, cb, sourceString);
323
324
  if ( res ) {
324
325
  debug('parsed pgn %j', pgn)
325
326
  }
@@ -500,7 +501,7 @@ function getField(pgn, index, data) {
500
501
  var hasMatch = !_.isUndefined(field.Match)
501
502
  if ( hasMatch && data.fields.list.length > 0 ) {
502
503
  let param = data.fields.list.find(f => f.Parameter === idx+1)
503
-
504
+
504
505
  if ( param ) {
505
506
  pgnList = pgnList.filter(f => f.Fields[idx].Match == param.Value)
506
507
  if ( pgnList.length == 0 ) {
@@ -513,7 +514,7 @@ function getField(pgn, index, data) {
513
514
  }
514
515
  })
515
516
  }
516
-
517
+
517
518
  if ( index >= 0 && index < pgn.Fields.length ) {
518
519
  return pgn.Fields[index]
519
520
  }
@@ -571,7 +572,7 @@ function readField(options, runPostProcessor, pgn, field, bs) {
571
572
  if ( reader ) {
572
573
  value = reader(pgn, field, bs)
573
574
  } else {
574
- if ( bs.bitsLeft < field.BitLength ) {
575
+ if ( field.Type !== RES_BINARY && bs.bitsLeft < field.BitLength ) {
575
576
  //no more data
576
577
  bs.readBits(bs.bitsLeft, false)
577
578
  return
@@ -701,12 +702,25 @@ function readValue(options, pgn, field, bs, bitLength) {
701
702
  } else {
702
703
  value = x === 0xffffffff && y == 0xffffffff ? null : new Uint64LE(y,x)
703
704
  }
704
- } else {
705
+ } else if ( bitLength <= 64 ) {
705
706
  value = bs.readBits(bitLength, field.Signed)
706
707
  if ( bitLength > 1 && isMax(bitLength, value, field.Signed) ) {
707
708
  value = null
708
709
  }
709
- //console.log(`${field.Name} ${bitLength} ${value} ${bs.view.buffer[bs.byteIndex]} ${bs.index}`)
710
+ } else {
711
+ if ( bs.bitsLeft < field.BitLength ) {
712
+ bitLength = bs.bitsLeft
713
+ }
714
+
715
+ value = bs.readArrayBuffer(bitLength/8, field.Signed)
716
+ value = new Uint32Array(value)
717
+ .reduce(function(acc, i) {
718
+ acc.push(i.toString(16));
719
+ return acc;
720
+ }, [])
721
+ .map(x => (x.length === 1 ? "0" + x : x))
722
+ .join(" ")
723
+ return value
710
724
  }
711
725
 
712
726
  if ( value != null && typeof value !== 'undefined' && typeof value !== 'number' ) {
@@ -744,7 +758,7 @@ function readVariableLengthField(options, pgn, field, bs) {
744
758
 
745
759
  try {
746
760
  var refField = getField(pgn.fields.PGN, bs.view.buffer[bs.byteIndex-1]-1, pgn)
747
-
761
+
748
762
  if ( refField ) {
749
763
  var bits = (refField.BitLength + 7) & ~7; // Round # of bits in field refField up to complete bytes: 1->8, 7->8, 8->8 etc.
750
764
  let res = readField(options, false, pgn, refField, bs)
@@ -918,7 +932,7 @@ fieldTypePostProcessors['Pressure'] = (field, value) => {
918
932
  return value
919
933
  }
920
934
 
921
- fieldTypePostProcessors['Binary data'] = (field, value) => {
935
+ fieldTypePostProcessors[RES_BINARY] = (field, value) => {
922
936
  return value.toString()
923
937
  }
924
938
 
package/lib/ikonvert.js CHANGED
@@ -77,7 +77,7 @@ function iKonvertStream (options) {
77
77
  that.sendPGN(msg)
78
78
  }
79
79
  })
80
- options.app.on('nmea2000JsonOut', (msg) => {
80
+ options.app.on(options.jsonOutEvent || 'nmea2000JsonOut', (msg) => {
81
81
  that.sendPGN(msg)
82
82
  })
83
83
 
package/lib/serial.js CHANGED
@@ -108,6 +108,10 @@ SerialStream.prototype.start = function () {
108
108
  this.isFile = false
109
109
  this.state = MSG_START
110
110
 
111
+ if ( typeof this.reconnectDelay === 'undefined' ) {
112
+ this.reconnectDelay = 1000
113
+ }
114
+
111
115
  if ( !this.options.fromFile ) {
112
116
  this.serial = new SerialPort(this.options.device, {
113
117
  baudRate: this.options.baudrate || 115200
@@ -122,7 +126,9 @@ SerialStream.prototype.start = function () {
122
126
  ? (msg) => {
123
127
  this.options.app.setProviderError(this.options.providerId, msg)
124
128
  }
125
- : () => {}
129
+ : () => {}
130
+ this.setProviderStatus = setProviderStatus
131
+
126
132
  var that = this
127
133
 
128
134
  this.serial.on('data', (data) => {
@@ -163,7 +169,7 @@ SerialStream.prototype.start = function () {
163
169
  }
164
170
  })
165
171
 
166
- this.options.app.on('nmea2000JsonOut', msg => {
172
+ this.options.app.on(this.options.jsonOutEvent || 'nmea2000JsonOut', msg => {
167
173
  if ( this.outAvailable ) {
168
174
  writeObject(msg)
169
175
  }
@@ -175,15 +181,18 @@ SerialStream.prototype.start = function () {
175
181
  this.serial.on('error', function (x) {
176
182
  setProviderError(x.message)
177
183
  console.log(x)
184
+ that.scheduleReconnect()
178
185
  })
179
186
  this.serial.on('close', () => {
180
187
  setProviderError('Closed, reconnecting...')
181
- this.start.bind(this)
188
+ //this.start.bind(this)
189
+ that.scheduleReconnect()
182
190
  })
183
191
  this.serial.on(
184
192
  'open',
185
193
  function () {
186
194
  try {
195
+ this.reconnectDelay = 1000
187
196
  setProviderStatus(`Connected to ${that.options.device}`)
188
197
  var buf = composeMessage(NGT_MSG_SEND, Buffer.from(NGT_STARTUP_MSG), NGT_STARTUP_MSG.length)
189
198
  debugOut(buf)
@@ -211,6 +220,16 @@ SerialStream.prototype.start = function () {
211
220
  }
212
221
  }
213
222
 
223
+ SerialStream.prototype.scheduleReconnect = function () {
224
+ this.reconnectDelay *= this.reconnectDelay < 60 * 1000 ? 1.5 : 1
225
+ const msg = `Not connected (retry delay ${(
226
+ this.reconnectDelay / 1000
227
+ ).toFixed(0)} s)`
228
+ debug(msg)
229
+ this.setProviderStatus(msg)
230
+ setTimeout(this.start.bind(this), this.reconnectDelay)
231
+ }
232
+
214
233
  function readData(that, data) {
215
234
  for ( var i = 0; i < data.length; i++ ) {
216
235
  //console.log(data[i])
package/lib/stringMsg.js CHANGED
@@ -59,7 +59,7 @@ exports.encodeActisense = ({
59
59
  byteString(data)
60
60
  ].join(','))
61
61
 
62
- exports.toActisenseSerialFormat = (pgn, data, dst=255, src=0) => exports.encodeActisense({
62
+ exports.toActisenseSerialFormat = (pgn, data, dst=255, src=0, prio=2) => exports.encodeActisense({
63
63
  pgn, data, dst, src, prio
64
64
  })
65
65
 
package/lib/toPgn.js CHANGED
@@ -154,7 +154,7 @@ function writeField(bs, pgn_number, field, data, value, bitLength) {
154
154
  }
155
155
 
156
156
  // console.log(`${field.Name}:${value}(${bitLength}-${field.Resolution})`)
157
- if ( _.isUndefined(value) ) {
157
+ if ( _.isUndefined(value) || value === null) {
158
158
  if ( field.Type && fieldTypeWriters[field.Type] ) {
159
159
  fieldTypeWriters[field.Type](pgn_number, field, value, bs)
160
160
  } else if ( bitLength % 8 == 0 ) {
@@ -223,7 +223,7 @@ function writeField(bs, pgn_number, field, data, value, bitLength) {
223
223
  if (field.Signed) {
224
224
  bs.writeInt32(value)
225
225
  } else {
226
- bs.writeUint32(value)
226
+ bs.writeUint32(value)
227
227
  }
228
228
  } else if (bitLength === 48 || bitLength == 24) {
229
229
  var count = bitLength/8;
package/lib/venus.js CHANGED
@@ -75,7 +75,7 @@ VenusStream.prototype._transform = function (pgn, encoding, done) {
75
75
  this.fromPgn.parseVenusMQTT(pgn, (error, pgn) => {
76
76
  if ( !error ) {
77
77
  this.push(pgn)
78
- this.options.app.emit('N2KAnalyzerOut', pgn)
78
+ this.options.app.emit(this.options.analyzerOutEvent || 'N2KAnalyzerOut', pgn)
79
79
  }
80
80
 
81
81
  done()
package/lib/w2k01.js CHANGED
@@ -51,7 +51,7 @@ function W2K01Stream (options, type, outEvent) {
51
51
  }
52
52
  })
53
53
 
54
- options.app.on('nmea2000JsonOut', (msg) => {
54
+ options.app.on(options.jsonOutEvent || 'nmea2000JsonOut', (msg) => {
55
55
  this.sendPGN(msg)
56
56
  })
57
57
  }
package/lib/ydgw02.js CHANGED
@@ -57,7 +57,7 @@ function Ydgw02Stream (options, type) {
57
57
  }
58
58
  })
59
59
 
60
- options.app.on('nmea2000JsonOut', (msg) => {
60
+ options.app.on(options.jsonOutEvent || 'nmea2000JsonOut', (msg) => {
61
61
  this.sendPGN(msg)
62
62
  })
63
63
 
@@ -133,7 +133,7 @@ Ydgw02Stream.prototype._transform = function (chunk, encoding, done) {
133
133
  const pgn = this.fromPgn.parseYDGW02(line)
134
134
  if ( !_.isUndefined(pgn) ) {
135
135
  this.push(pgn)
136
- this.options.app.emit('N2KAnalyzerOut', pgn)
136
+ this.options.app.emit(this.options.analyzerOutEvent || 'N2KAnalyzerOut', pgn)
137
137
  }
138
138
 
139
139
  done()
package/lib/ydvr.js CHANGED
@@ -108,6 +108,10 @@ function YdvrStream() {
108
108
 
109
109
  this.parser = new FromPgn();
110
110
 
111
+ this.messageCount = 0;
112
+ this.errorCount = 0;
113
+ this.timerResetCount = 0;
114
+
111
115
  this.parser.on('error', (pgn, error) => {
112
116
  console.error(`Error parsing ${pgn.pgn} ${error}`);
113
117
  console.error(error.stack);
@@ -141,7 +145,8 @@ YdvrStream.prototype.parseNextRecord = function () {
141
145
  let timeAbsolute;
142
146
  if (this.lastTime != null && time < this.lastTime) {
143
147
  this.timeOffset = (this.timeOffset || 0) + 60000;
144
- timeAbsolute = time + timeOffset;
148
+ timeAbsolute = time + this.timeOffset;
149
+ this.timerResetCount += 1;
145
150
  } else {
146
151
  timeAbsolute = time;
147
152
  }
@@ -150,6 +155,9 @@ YdvrStream.prototype.parseNextRecord = function () {
150
155
  var identifier = this.bs.readUint32();
151
156
  if (identifier === 0xffffffff) {
152
157
  // service record
158
+ if (this.bs.bitsLeft < 8 * 8) {
159
+ return false;
160
+ }
153
161
  var srData = this.bs.readArrayBuffer(8);
154
162
  } else {
155
163
  const pgn = parseCanId(identifier);
@@ -163,6 +171,9 @@ YdvrStream.prototype.parseNextRecord = function () {
163
171
  } else {
164
172
  bodyLen = 8;
165
173
  }
174
+ if (this.bs.bitsLeft < bodyLen * 8) {
175
+ return false;
176
+ }
166
177
  var body = this.bs.readArrayBuffer(bodyLen);
167
178
 
168
179
  const parsed = this.parser.parsePgnData(
@@ -177,6 +188,7 @@ YdvrStream.prototype.parseNextRecord = function () {
177
188
  }
178
189
  }
179
190
 
191
+ this.messageCount += 1;
180
192
  return true;
181
193
  }
182
194
 
@@ -192,7 +204,10 @@ YdvrStream.prototype._transform = function (chunk, encoding, done) {
192
204
  let parsed = false;
193
205
  try {
194
206
  parsed = this.parseNextRecord();
195
- } catch (ex) { }
207
+ } catch (ex) {
208
+ console.error(ex);
209
+ this.errorCount += 1;
210
+ }
196
211
  if (!parsed) {
197
212
  this.bs.byteIndex = startIndex;
198
213
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canboat/canboatjs",
3
- "version": "2.0.0-beta2",
3
+ "version": "2.0.0",
4
4
  "description": "Native javascript version of canboat",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -53,7 +53,7 @@
53
53
  ],
54
54
  "license": "Apache-2.0",
55
55
  "dependencies": {
56
- "@canboat/pgns": "2.0.0-beta1",
56
+ "@canboat/pgns": "2.x.x",
57
57
  "bit-buffer": "0.2.3",
58
58
  "date-fns": "2.0.0-alpha.27",
59
59
  "debug": "^4.3.4",
@@ -80,7 +80,7 @@
80
80
  },
81
81
  "optionalDependencies": {
82
82
  "serialport": "^9.0.7",
83
- "socketcan": "^2.2.2"
83
+ "socketcan": "^4.0.3"
84
84
  },
85
85
  "repository": {
86
86
  "type": "git",
package/W2K_NOTES DELETED
@@ -1,5 +0,0 @@
1
- N2K Actisense corruption?
2
- Docs don't match
3
- What is that last byte?
4
-
5
- Not seeing 126996
package/n2ka.js DELETED
@@ -1,123 +0,0 @@
1
- var net = require('net');
2
- const BitStream = require('bit-buffer').BitStream
3
- const BitView = require('bit-buffer').BitView
4
- const cid = require('./lib/canId')
5
- const FromPgn = require('./lib/fromPgn').Parser
6
- const debug = require('debug')('canboatjs:w2k01')
7
-
8
- var client = new net.Socket();
9
- client.connect(60003, '192.168.1.145', function() {
10
- console.log('Connected');
11
- });
12
-
13
- client.on('data', function(data) {
14
- const parser = new FromPgn()
15
-
16
- /*
17
- var obuf = Buffer.from(data)
18
- let len = obuf.readUInt16LE(3)
19
-
20
- let buf = Buffer.alloc(len)
21
- obuf.copy(buf, 0, 5, len+5)
22
- console.log('New Buf: ' + buf.toString('hex'))
23
- let offset = 0
24
- let dst = buf.readUInt8(offset)
25
- offset += 1
26
- let canid = buf.readUInt32LE(offset)
27
- offset += 4
28
- let timestamp = buf.readUInt32LE(offset)
29
- offset += 4
30
- let mhs = buf.readUInt8(offset)
31
- offset += 1
32
-
33
- let info = cid.parseCanId(canid)
34
-
35
- console.log(`(${len}, ${data.length}) (${info.src}, ${info.dst}) ${info.pgn} ${timestamp}`)
36
-
37
-
38
- try {
39
- let pgnData = Buffer.alloc(len-offset-2)
40
- buf.copy(pgnData, 0, offset, len-2)
41
- console.log('pgnData: ' + pgnData.toString('hex'))
42
- let pgn = parser.parsePgnData(info, pgnData.length, pgnData, true)
43
- console.log(pgn)
44
- } catch (error) {
45
-
46
- console.log(error)
47
- }
48
- */
49
-
50
- debug('Received: (' + data.length + ') ' + Buffer.from(data).toString('hex'))
51
-
52
- var inBuf = Buffer.from(data)
53
- var inOffset = 0
54
-
55
- while ( true ) {
56
- let len = inBuf.readUInt16LE(inOffset+3)
57
-
58
- if ( inBuf.length < inOffset + 5 + len ) {
59
- console.log('PARTIAL PGN')
60
- this.lastChunk = Buffer.alloc(inBuf.length - inOffset)
61
- inBuf.copy(this.lastChunk, 0, inOffset, inBuf.length-1)
62
- return
63
- } else if ( inBuf[inOffset + 5 + len -1] != 0x03 ||
64
- inBuf[inOffset + 5 + len -2] != 0x10 ) {
65
- //console.log('Received: (' + data.length + ') ' + Buffer.from(data).toString('hex'))
66
- //console.log('LENGTH MISMATCH ' + inBuf[inOffset + 5 + len -1])
67
- return
68
- }
69
-
70
- let buf = Buffer.alloc(len)
71
- inBuf.copy(buf, 0, inOffset+5, inOffset+len+5)
72
-
73
-
74
- let offset = 0
75
- let dst = buf.readUInt8(offset)
76
- offset += 1
77
- let canid = buf.readUInt32LE(offset)
78
- offset += 4
79
- let timestamp = buf.readUInt32LE(offset)
80
- offset += 4
81
- let mhs = buf.readUInt8(offset)
82
- offset += 1
83
-
84
- let info = cid.parseCanId(canid)
85
-
86
- if ( info.pgn != 129025)
87
- return
88
-
89
- let pgnData = Buffer.alloc(len-offset-3)
90
- buf.copy(pgnData, 0, offset, len-3)
91
-
92
- /*
93
- console.log('inputLen: ' + inBuf.length)
94
- console.log('NextBuf: (' + buf.length + ') ' + buf.toString('hex'))
95
- console.log('pgnData: (' + pgnData.length + ') ' + pgnData.toString('hex'))
96
-
97
- console.log(`${len} ${mhs} ${dst} (${info.src}, ${info.dst}) ${info.pgn} ${timestamp}`)
98
- */
99
-
100
- let pgn = parser.parsePgnData(info, pgnData.length, pgnData, true)
101
- if ( pgn ) {
102
- //console.log(JSON.stringify(pgn))
103
-
104
- }
105
-
106
- inOffset += len + 5
107
- //console.log(`inOffset ${inOffset} `)
108
- if ( inOffset >= inBuf.length ) {
109
- return
110
- }
111
- break
112
- }
113
- });
114
-
115
- client.on('close', function() {
116
- console.log('Connection closed');
117
- })
118
-
119
- process.on('SIGINT', () => {
120
- console.info('SIGINT signal received.');
121
- client.destroy()
122
- });
123
-
package/wk2.out DELETED
@@ -1,224 +0,0 @@
1
- A000021.144 05FF2 1F801 F04E4717B2E569D2
2
- A000021.244 05FF2 1F801 EF4E4717B3E569D2
3
- A000021.293 05FF2 1F802 FFFC289A1600FFFF
4
- A000021.344 05FF2 1F801 EF4E4717B3E569D2
5
- A000021.355 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
6
- A000021.360 05FF7 1EF00 E59812070202FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7F
7
- A000021.363 05FF3 1F904 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFF7F
8
- A000021.367 05FF3 1F903 FFF0FFFFFF7FFFFF
9
- A000021.444 05FF2 1F801 EE4E4717B4E569D2
10
- A000021.544 05FF2 1F802 FFFC289A1700FFFF
11
- A000021.544 05FF2 1F801 F04E4717AFE569D2
12
- A000021.644 05FF2 1F801 F14E4717ABE569D2
13
- A000021.700 05FF7 1EF00 E598E708000A0301030DDDB7C684051101
14
- A000021.744 05FF2 1F801 F24E4717A8E569D2
15
- A000021.794 05FF2 1F802 FFFC289A1900FFFF
16
- A000021.844 05FF2 1F801 F34E4717A4E569D2
17
- A000021.944 05FF2 1F801 F34E4717A1E569D2
18
- A000022.041 05FF7 1EF00 E5984819020203030101030F08FF0F00303CA31C0113C6A90F
19
- A000022.044 05FF3 1F805 FFDB4BA48A7822C068149B75826B05808477E7A7D762F5998A99000000000014FC06CD002A03AAF2FFFF00
20
- A000022.046 05FF6 1F11A FFF2DB4B69F8FFFF
21
- A000022.068 05FF6 1FA03 FFDACD0010036F02
22
- A000022.068 05FF7 1EF00 E5981700040453487B42F4D0E942AFB70443000000000000000000000000000000000000000000000000F29C0340CE06FB4022C10141BA7EC74000000000
23
- A000022.073 05FF2 1F802 FFFC289A1D00FFFF
24
- A000022.073 05FF2 1F801 F44E47179EE569D2
25
- A000022.144 05FF2 1F801 F14E471797E569D2
26
- A000022.244 05FF2 1F801 EC4E471799E569D2
27
- A000022.294 05FF2 1F802 FFFC289A2800FFFF
28
- A000022.344 05FF2 1F801 E74E47179BE569D2
29
- A000022.355 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
30
- A000022.360 05FF7 1EF00 E59812070202FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7F
31
- A000022.362 05FF3 1F904 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFF7F
32
- A000022.366 05FF3 1F903 FFF0FFFFFF7FFFFF
33
- A000022.387 05FF7 1EF00 E598E008020203090012E8071900
34
- A000022.389 05FF7 1EF00 E598E008020203090112E8071900
35
- A000022.391 05FF7 1EF00 E598E008020203090B11011900
36
- A000022.392 05FF7 1EF00 E598E008020203090C12E8071900
37
- A000022.444 05FF2 1F801 E04E47179CE569D2
38
- A000022.544 05FF2 1F802 FFFC289A3200FFFF
39
- A000022.544 05FF2 1F801 F54E471771E569D2
40
- A000022.644 05FF2 1F801 ED4E471772E569D2
41
- A000022.700 05FF7 1EF00 E598E708000A0301030DDDB7C684051101
42
- A000022.744 05FF2 1F801 E54E471772E569D2
43
- A000022.794 05FF2 1F802 FFFC289A4600FFFF
44
- A000022.844 05FF2 1F801 DB4E471772E569D2
45
- A000022.944 05FF2 1F801 D24E471771E569D2
46
- A000023.044 05FF3 1F805 FFDB4BDBB17822804FA0566B826B0580C203F09CD762F53F9891000000000014FC06CD002A03AAF2FFFF00
47
- A000023.049 05FF6 1F11A FFF2DB4B69F8FFFF
48
- A000023.068 05FF6 1FA03 FFDACD0010036F02
49
- A000023.068 05FF7 1EF00 E598170004043EAD77420D9DE84217C303430000000000000000000000000000000000000000000000007193034085F4FA40B0B701418E6FC74000000000
50
- A000023.072 05FF2 1F802 FFFC289A5300FFFF
51
- A000023.072 05FF2 1F801 C84E47176FE569D2
52
- A000023.144 05FF2 1F801 C24E47176DE569D2
53
- A000023.244 05FF2 1F801 B84E47176BE569D2
54
- A000023.294 05FF2 1F802 FFFC289A5900FFFF
55
- A000023.344 05FF2 1F801 AE4E471769E569D2
56
- A000023.355 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
57
- A000023.360 05FF7 1EF00 E59812070202FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7F
58
- A000023.362 05FF3 1F904 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFF7F
59
- A000023.366 05FF3 1F903 FFF0FFFFFF7FFFFF
60
- A000023.443 05FF2 1F801 9E4E471764E569D2
61
- A000023.541 05FF7 1EF00 E5984719020206030101030F08FF0F00303CA31C011100190022904E2B9EA10C
62
- A000023.544 05FF2 1F802 FFFC8B956500FFFF
63
- A000023.545 05FF2 1F801 914E471761E569D2
64
- A000023.644 05FF2 1F801 984E471762E569D2
65
- A000023.700 05FF7 1EF00 E598E708000A0301030DDDB7C684051101
66
- A000023.744 05FF2 1F801 3A4E471754E569D2
67
- A000023.794 05FF2 1F802 FFFC488E6900FFFF
68
- A000023.844 05FF2 1F801 314E471752E569D2
69
- A000023.944 05FF2 1F801 2A4E471752E569D2
70
- A000024.041 05FF7 1EF00 E5984819020203030101030F08FF0F00303CA31C0113C7A90F
71
- A000024.044 05FF3 1F805 FFDB4BC4D87822C0589B0945826B0500F03E8196D762F52BF085000000000014FC06CD002A03AAF2FFFF00
72
- A000024.048 05FF6 1F11A FFF2DB4B69F8FFFF
73
- A000024.068 05FF6 1FA03 FFDACD0010036F02
74
- A000024.068 05FF7 1EF00 E59817000404AF8B764259E0E742CB4D0343000000000000000000000000000000000000000000000000EB8903401DE2FA402EAE01414C60C74000000000
75
- A000024.071 05FF2 1F802 FFFCDE896200FFFF
76
- A000024.075 05FF2 1F801 234E471753E569D2
77
- A000024.144 05FF2 1F801 204E471754E569D2
78
- A000024.244 05FF2 1F801 1D4E471754E569D2
79
- A000024.294 05FF2 1F802 FFFC78865600FFFF
80
- A000024.344 05FF2 1F801 1A4E471754E569D2
81
- A000024.354 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
82
- A000024.360 05FF7 1EF00 E59812070202FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7F
83
- A000024.362 05FF3 1F904 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFF7F
84
- A000024.364 05FF3 1F903 FFF0FFFFFF7FFFFF
85
- A000024.387 05FF7 1EF00 E598E008020203090012E8071900
86
- A000024.389 05FF7 1EF00 E598E008020203090112E8071900
87
- A000024.391 05FF7 1EF00 E598E008020203090B11011900
88
- A000024.392 05FF7 1EF00 E598E008020203090C12E8071900
89
- A000024.444 05FF2 1F801 174E471755E569D2
90
- A000024.544 05FF2 1F802 FFFC78865000FFFF
91
- A000024.545 05FF2 1F801 144E471755E569D2
92
- A000024.644 05FF2 1F801 114E471756E569D2
93
- A000024.700 05FF7 1EF00 E598E708000A0301030DDDB7C684051101
94
- A000024.744 05FF2 1F801 074E471756E569D2
95
- A000024.794 05FF2 1F802 FFFC78864900FFFF
96
- A000024.844 05FF2 1F801 FF4D471755E569D2
97
- A000024.944 05FF2 1F801 F84D471755E569D2
98
- A000025.044 05FF3 1F805 FFDB4BD4FF7822C025B34D38826B0500CB59C196D762F5753F7F000000000014FC06CD002A03AAF2FFFF00
99
- A000025.049 05FF6 1F11A FFF2DB4B69F8FFFF
100
- A000025.066 05FF6 1FA03 FFDACD000F036E02
101
- A000025.068 05FF7 1EF00 E59817000404677C7742E7F1E742D47103430000000000000000000000000000000000000000000000005F800340A2CFFA40A3A40141F950C74000000000
102
- A000025.072 05FF2 1F802 FFFC78864500FFFF
103
- A000025.072 05FF2 1F801 EC4D471754E569D2
104
- A000025.144 05FF2 1F801 E14D471754E569D2
105
- A000025.244 05FF2 1F801 D64D471754E569D2
106
- A000025.294 05FF2 1F802 FFFC78864300FFFF
107
- A000025.344 05FF2 1F801 CB4D471754E569D2
108
- A000025.355 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
109
- A000025.360 05FF7 1EF00 E59812070202FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7F
110
- A000025.362 05FF3 1F904 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFF7F
111
- A000025.365 05FF3 1F903 FFF0FFFFFF7FFFFF
112
- A000025.444 05FF2 1F801 C04D471754E569D2
113
- A000025.544 05FF2 1F802 FFFC78864000FFFF
114
- A000025.544 05FF2 1F801 B54D471754E569D2
115
- A000025.644 05FF2 1F801 AA4D471754E569D2
116
- A000025.700 05FF7 1EF00 E598E708000A0301030DDDB7C684051101
117
- A000025.744 05FF2 1F801 A44D471755E569D2
118
- A000025.794 05FF2 1F802 FFFC78863E00FFFF
119
- A000025.844 05FF2 1F801 9E4D471755E569D2
120
- A000025.944 05FF2 1F801 7A4D471756E569D2
121
- A000026.044 05FF3 1F805 FFDB4B0B277922005557F01B826B05004210BF97D762F528937E000000000014FC06CD002A03AAF2FFFF00
122
- A000026.049 05FF6 1F11A FFF2DB4B69F8FFFF
123
- A000026.063 05FF6 1FA03 FFDACD000F036E02
124
- A000026.068 05FF7 1EF00 E59817000404E2F8784290E3E84238090443000000000000000000000000000000000000000000000000CB76034014BDFA400E9B01419741C74000000000
125
- A000026.073 05FF2 1F802 FFFC78864200FFFF
126
- A000026.073 05FF2 1F801 734D471759E569D2
127
- A000026.073 05FF7 1EF00 E5984719020206030101030F08FF0F00303CA31C011100190022904E2B9FA10C
128
- A000026.078 05FF7 1EF00 E5984819020203030101030F08FF0F00303CA31C0113C8A90F
129
- A000026.144 05FF2 1F801 6A4D47175BE569D2
130
- A000026.244 05FF2 1F801 614D47175EE569D2
131
- A000026.294 05FF2 1F802 FFFC78865300FFFF
132
- A000026.344 05FF2 1F801 574D471760E569D2
133
- A000026.355 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
134
- A000026.360 05FF7 1EF00 E59812070202FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7F
135
- A000026.362 05FF3 1F904 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFF7F
136
- A000026.365 05FF3 1F903 FFF0FFFFFF7FFFFF
137
- A000026.387 05FF7 1EF00 E598E008020203090012E8071900
138
- A000026.389 05FF7 1EF00 E598E008020203090112E8071900
139
- A000026.391 05FF7 1EF00 E598E008020203090B11011900
140
- A000026.392 05FF7 1EF00 E598E008020203090C12E8071900
141
- A000026.444 05FF2 1F801 4C4D471763E569D2
142
- A000026.544 05FF2 1F802 FFFCE6846100FFFF
143
- A000026.544 05FF2 1F801 464D471763E569D2
144
- A000026.644 05FF2 1F801 404D471762E569D2
145
- A000026.700 05FF7 1EF00 E598E708000A0301030DDDB7C684051101
146
- A000026.744 05FF2 1F801 394D471761E569D2
147
- A000026.794 05FF2 1F802 FFFC38826B00FFFF
148
- A000026.844 05FF2 1F801 324D471760E569D2
149
- A000026.944 05FF2 1F801 2B4D471760E569D2
150
- A000027.044 05FF3 1F805 FFDB4BF44D7922402890A309826B0580C6D36299D762F5B41E7E000000000014FC06CD002903AAF2FFFF00
151
- A000027.048 05FF6 1F11A FFF2DB4B69F8FFFF
152
- A000027.065 05FF6 1FA03 FFDACD000F036E02
153
- A000027.065 05FF7 1EF00 E5981700040469777B42F0FAE942BFCF04430000000000000000000000000000000000000000000000002F6D034068AAFA406B9101411E32C74000000000
154
- A000027.072 05FF2 1F802 FFFCC07E7800FFFF
155
- A000027.072 05FF2 1F801 244D471760E569D2
156
- A000027.144 05FF2 1F801 184D47175FE569D2
157
- A000027.244 05FF2 1F801 0B4D47175FE569D2
158
- A000027.294 05FF2 1F802 FFFC6F7C7D00FFFF
159
- A000027.344 05FF2 1F801 FE4C47175EE569D2
160
- A000027.355 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
161
- A000027.360 05FF7 1EF00 E59812070202FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7F
162
- A000027.362 05FF3 1F904 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFF7F
163
- A000027.366 05FF3 1F903 FFF0FFFFFF7FFFFF
164
- A000027.444 05FF2 1F801 F34C47175FE569D2
165
- A000027.544 05FF2 1F802 FFFC5E7A8000FFFF
166
- A000027.544 05FF2 1F801 C34C47175FE569D2
167
- A000027.642 05FF2 1F801 B64C471760E569D2
168
- A000027.707 05FF7 1EF00 E598E708000A0301030DDDB7C684051101
169
- A000027.744 05FF2 1F801 AA4C47175FE569D2
170
- A000027.794 05FF2 1F802 FFFC177A8700FFFF
171
- A000027.844 05FF2 1F801 A24C47175EE569D2
172
- A000027.944 05FF2 1F801 874C47175FE569D2
173
- A000028.041 05FF7 1EF00 E5984819020203030101030F08FF0F00303CA31C0113C9A90F
174
- A000028.044 05FF3 1F805 FFDB4B0475792200D0CA4FE2816B0580641E6B99D762F5ACF17D000000000014FC06CD002903AAF2FFFF00
175
- A000028.048 05FF6 1F11A FFF2DB4B69F8FFFF
176
- A000028.068 05FF6 1FA03 FFDACD000F036E02
177
- A000028.068 05FF7 1EF00 E598170004049E9A7E42D81AEB42C6AD05430000000000000000000000000000000000000000000000008A630340A097FA40B88701418E22C74000000000
178
- A000028.074 05FF2 1F802 FFFC92798600FFFF
179
- A000028.074 05FF2 1F801 7B4C471760E569D2
180
- A000028.144 05FF2 1F801 764C471762E569D2
181
- A000028.244 05FF2 1F801 714C471764E569D2
182
- A000028.294 05FF2 1F802 FFFCFA768000FFFF
183
- A000028.344 05FF2 1F801 5C4C47176BE569D2
184
- A000028.355 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
185
- A000028.359 05FF7 1EF00 E59812070202FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7F
186
- A000028.362 05FF3 1F904 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFF7F
187
- A000028.367 05FF3 1F903 FFF0FFFFFF7FFFFF
188
- A000028.386 05FF7 1EF00 E598E008020203090012E8071900
189
- A000028.389 05FF7 1EF00 E598E008020203090112E8071900
190
- A000028.391 05FF7 1EF00 E598E008020203090B11011900
191
- A000028.392 05FF7 1EF00 E598E008020203090C12E8071900
192
- A000028.444 05FF2 1F801 584C47176EE569D2
193
- A000028.541 05FF7 1EF00 E5984719020206030101030F08FF0F00303CA31C011100190022904E2BA0A10C
194
- A000028.544 05FF2 1F802 FFFC82737900FFFF
195
- A000028.545 05FF2 1F801 4C4C471778E569D2
196
- A000028.644 05FF2 1F801 464C471780E569D2
197
- A000028.707 05FF7 1EF00 E598E708000A0301030DDDB7C684051101
198
- A000028.744 05FF2 1F801 404C47177EE569D2
199
- A000028.794 05FF2 1F802 FFFC146C6C00FFFF
200
- A000028.844 05FF2 1F801 3C4C471780E569D2
201
- A000028.944 05FF2 1F801 354C471787E569D2
202
- A000029.044 05FF3 1F805 FFDB4B149C7922801525F6D0816B050017A601A3D762F5F8567D000000000014FC06CD002903AAF2FFFF00
203
- A000029.048 05FF6 1F11A FFF2DB4B69F8FFFF
204
- A000029.067 05FF6 1FA03 FFDACD000E036E02
205
- A000029.068 05FF7 1EF00 E598170004045FD480425FF3EB424A6A0643000000000000000000000000000000000000000000000000D75A0340A886FA40F67E01417F14C74000000000
206
- A000029.074 05FF2 1F802 FFFCCE696A00FFFF
207
- A000029.074 05FF2 1F801 314C471789E569D2
208
- A000029.144 05FF2 1F801 2C4C47178BE569D2
209
- A000029.244 05FF2 1F801 254C471792E569D2
210
- A000029.293 05FF2 1F802 FFFCE0646700FFFF
211
- A000029.344 05FF2 1F801 294C47178CE569D2
212
- A000029.355 05FF7 1EF00 E59861060202FFFFFFFF03030000FFFFFFFFFFFFFFFFFFFF0000FFFFFF7FFFFFFF7FFFFFFF7F0000FF7F
213
- A000029.359 05FF7 1EF00 E59812070202FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7F
214
- A000029.362 05FF3 1F904 FFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFF7F
215
- A000029.362 05FF3 1F903 FFF0FFFFFF7FFFFF
216
- A000029.444 05FF2 1F801 244C471790E569D2
217
- A000029.544 05FF2 1F802 FFFCB0636800FFFF
218
- A000029.544 05FF2 1F801 1B4C471796E569D2
219
- A000029.644 05FF2 1F801 134C47179CE569D2
220
- A000029.708 05FF7 1EF00 E598E708000A0301030DDDB7C684051101
221
- A000029.744 05FF2 1F801 0A4C4717A3E569D2
222
- A000029.792 05FF2 1F802 FFFC74656800FFFF
223
- A000029.844 05FF2 1F801 004C4717A9E569D2
224
- A000029.944 05FF2 1F801 F64B4717AEE569D2