pyadps 0.3.3b0__py3-none-any.whl

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.
@@ -0,0 +1,567 @@
1
+ {
2
+ "rdi_ensemble": {
3
+ "index": 1,
4
+ "unit": "",
5
+ "scale": 1,
6
+ "byte": 2,
7
+ "type": "uint16",
8
+ "command": "",
9
+ "valid_min": 1,
10
+ "valid_max": 65535,
11
+ "long_name": "Ens/Ensemble Number",
12
+ "description": "This field contains the sequential number of the ensemble to which the data in the output buffer apply."
13
+ },
14
+ "rtc_year": {
15
+ "index": 2,
16
+ "unit": "",
17
+ "scale": 1,
18
+ "byte": 1,
19
+ "type": "uint8",
20
+ "command": "TS",
21
+ "valid_min": "",
22
+ "valid_max": "",
23
+ "long_name": "RTC Year",
24
+ "description": "This field contains the time in year from the WorkHorse ADCP’s real-time clock (RTC) that the current data ensemble began. The TS command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
25
+ },
26
+ "rtc_month": {
27
+ "index": 3,
28
+ "unit": "",
29
+ "scale": 1,
30
+ "byte": 1,
31
+ "type": "uint8",
32
+ "command": "TS",
33
+ "valid_min": "",
34
+ "valid_max": "",
35
+ "long_name": "RTC Month",
36
+ "description": "This field contains the time in month from the WorkHorse ADCP’s real-time clock (RTC) that the current data ensemble began. The TS command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
37
+ },
38
+ "rtc_day": {
39
+ "index": 4,
40
+ "unit": "",
41
+ "scale": 1,
42
+ "byte": 1,
43
+ "type": "uint8",
44
+ "command": "TS",
45
+ "valid_min": "",
46
+ "valid_max": "",
47
+ "long_name": "RTC Day",
48
+ "description": "This field contains the time in day from the WorkHorse ADCP’s real-time clock (RTC) that the current data ensemble began. The TS command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
49
+ },
50
+ "rtc_hour": {
51
+ "index": 5,
52
+ "unit": "",
53
+ "scale": 1,
54
+ "byte": 1,
55
+ "type": "uint8",
56
+ "command": "TS",
57
+ "valid_min": "",
58
+ "valid_max": "",
59
+ "long_name": "RTC Hour",
60
+ "description": "This field contains the time in hour from the WorkHorse ADCP’s real-time clock (RTC) that the current data ensemble began. The TS command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
61
+ },
62
+ "rtc_minute": {
63
+ "index": 6,
64
+ "unit": "",
65
+ "scale": 1,
66
+ "byte": 1,
67
+ "type": "uint8",
68
+ "command": "TS",
69
+ "valid_min": "",
70
+ "valid_max": "",
71
+ "long_name": "RTC Minute",
72
+ "description": "This field contains the time in minute from the WorkHorse ADCP’s real-time clock (RTC) that the current data ensemble began. The TS command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
73
+ },
74
+ "rtc_second": {
75
+ "index": 7,
76
+ "unit": "",
77
+ "scale": 1,
78
+ "byte": 1,
79
+ "type": "uint8",
80
+ "command": "TS",
81
+ "valid_min": "",
82
+ "valid_max": "",
83
+ "long_name": "RTC Second",
84
+ "description": "This field contains the time in second from the WorkHorse ADCP’s real-time clock (RTC) that the current data ensemble began. The TS command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
85
+ },
86
+ "rtc_hundredth": {
87
+ "index": 8,
88
+ "unit": "",
89
+ "scale": 1,
90
+ "byte": 1,
91
+ "type": "uint8",
92
+ "command": "TS",
93
+ "valid_min": "",
94
+ "valid_max": "",
95
+ "long_name": "RTC Hundredth",
96
+ "description": "This field contains the time in hundredth from the WorkHorse ADCP’s real-time clock (RTC) that the current data ensemble began. The TS command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
97
+ },
98
+ "ensemble_msb": {
99
+ "index": 9,
100
+ "unit": "",
101
+ "scale": 1,
102
+ "byte": 2,
103
+ "type": "uint8",
104
+ "command": "",
105
+ "valid_min": "",
106
+ "valid_max": "",
107
+ "long_name": "Ens/Ensemble Number",
108
+ "description": "This field increments each time the Ensemble Number field (bytes 3,4) “rolls over.” This allows ensembles up to 16,777,215. See Ensemble Number field above."
109
+ },
110
+ "bit_result": {
111
+ "index": 10,
112
+ "unit": "",
113
+ "scale": 1,
114
+ "byte": 2,
115
+ "type": "uint16",
116
+ "command": "",
117
+ "valid_min": "",
118
+ "valid_max": "",
119
+ "long_name": "BIT/BIT Result",
120
+ "description": "This field contains the results of the WorkHorse ADCP’s Built-in Test function. A zero code indicates a successful BIT result. The details can be found in Bit method."
121
+ },
122
+ "speed_of_sound": {
123
+ "index": 11,
124
+ "unit": "m/s",
125
+ "scale": 1,
126
+ "byte": 2,
127
+ "type": "uint16",
128
+ "command": "EC",
129
+ "valid_min": 1400,
130
+ "valid_max": 1600,
131
+ "long_name": "Speed of Sound",
132
+ "description": "Contains either manual or calculated speed of sound information (EC command)."
133
+ },
134
+ "depth_of_transducer": {
135
+ "index": 12,
136
+ "unit": "dm",
137
+ "scale": 1,
138
+ "byte": 2,
139
+ "type": "uint16",
140
+ "command": "ED",
141
+ "valid_min": 1,
142
+ "valid_max": 65355,
143
+ "long_name": "Depth of Transducer",
144
+ "description": "Contains the depth of the transducer below the water surface (ED command). This value may be a manual setting or a reading from a depth sensor."
145
+ },
146
+ "heading": {
147
+ "index": 13,
148
+ "unit": "degree",
149
+ "scale": 0.01,
150
+ "byte": 2,
151
+ "type": "uint16",
152
+ "command": "EH",
153
+ "valid_min": 0.00,
154
+ "valid_max": 359.99,
155
+ "long_name": "Heading",
156
+ "description": "Contains the WorkHorse ADCP heading angle (EH command). This value may be a manual setting or a reading from a heading sensor."
157
+ },
158
+ "pitch": {
159
+ "index": 14,
160
+ "unit": "degree",
161
+ "scale": 0.01,
162
+ "byte": 2,
163
+ "type": "int16",
164
+ "command": "EP",
165
+ "valid_min": -20.00,
166
+ "valid_max": 20.00,
167
+ "long_name": "Pitch (Tilt 1)",
168
+ "description": "Contains the WorkHorse ADCP pitch angle (EP command). This value may be a manual setting or a reading from a tilt sensor. Positive values mean that Beam #3 is spatially higher than Beam #4."
169
+ },
170
+ "roll": {
171
+ "index": 15,
172
+ "unit": "degree",
173
+ "scale": 0.01,
174
+ "byte": 2,
175
+ "type": "int16",
176
+ "command": "ER",
177
+ "valid_min": -20.00,
178
+ "valid_max": 20.00,
179
+ "long_name": "Roll (Tilt 2)",
180
+ "description": "Contains the WorkHorse ADCP roll angle (ER command). This value may be a manual setting or a reading from a tilt sensor. For up-facing WorkHorse ADCPs, positive values mean that Beam #2 is spatially higher than Beam #1. For down-facing WorkHorse ADCPs, positive values mean that Beam #1 is spatially higher than Beam #2."
181
+ },
182
+ "salinity": {
183
+ "index": 16,
184
+ "unit": "PSU",
185
+ "scale": 1,
186
+ "byte": 2,
187
+ "type": "uint16",
188
+ "command": "ES",
189
+ "valid_min": 0,
190
+ "valid_max": 40,
191
+ "long_name": "Salinity",
192
+ "description": "Contains the salinity value of the water at the transducer head (ES command). This value may be a manual setting or a reading from a conductivity sensor."
193
+ },
194
+ "temperature": {
195
+ "index": 17,
196
+ "unit": "degree",
197
+ "scale": 0.01,
198
+ "byte": 2,
199
+ "type": "int16",
200
+ "command": "ET",
201
+ "valid_min": -5,
202
+ "valid_max": 40,
203
+ "long_name": "Temperature",
204
+ "description": "Contains the temperature of the water at the transducer head (ET command). This value may be a manual setting or a reading from a temperature sensor."
205
+ },
206
+ "mpt_minute": {
207
+ "index": 18,
208
+ "unit": "",
209
+ "scale": "",
210
+ "byte": 1,
211
+ "type": "uint8",
212
+ "command": "",
213
+ "valid_min": "",
214
+ "valid_max": "",
215
+ "long_name": "MPT Minutes",
216
+ "description": "Contains the minute portion of the WorkHorse ADCP’s elapsed time measurement of the amount of time needed to complete the pinging of the current ensemble."
217
+ },
218
+ "mpt_second": {
219
+ "index": 19,
220
+ "unit": "",
221
+ "scale": "",
222
+ "byte": 1,
223
+ "type": "uint8",
224
+ "command": "",
225
+ "valid_min": "",
226
+ "valid_max": "",
227
+ "long_name": "MPT Seconds",
228
+ "description": "Contains the second portion of the WorkHorse ADCP’s elapsed time measurement of the amount of time needed to complete the pinging of the current ensemble."
229
+ },
230
+ "mpt_hundredth": {
231
+ "index": 20,
232
+ "unit": "",
233
+ "scale": 0.01,
234
+ "byte": 2,
235
+ "type": "uint16",
236
+ "command": "",
237
+ "valid_min": "",
238
+ "valid_max": "",
239
+ "long_name": "MPT Hundredths",
240
+ "description": "Contains the hundredth of a second portion of the WorkHorse ADCP’s elapsed time measurement of the amount of time needed to complete the pinging of the current ensemble."
241
+ },
242
+ "head_std_dev": {
243
+ "index": 21,
244
+ "unit": "degree",
245
+ "scale": 0.1,
246
+ "byte": 1,
247
+ "type": "uint8",
248
+ "command": "",
249
+ "valid_min": 0,
250
+ "valid_max": 20,
251
+ "long_name": "Head Standard Deviation",
252
+ "description": "These fields contain the standard deviation (accuracy) of the heading and tilt angles from the gyrocompass/pendulums."
253
+ },
254
+ "pitch_std_dev": {
255
+ "index": 22,
256
+ "unit": "degree",
257
+ "scale": 0.1,
258
+ "byte": 1,
259
+ "type": "uint8",
260
+ "command": "",
261
+ "valid_min": 0,
262
+ "valid_max": 20,
263
+ "long_name": "Pitch Standard Deviation",
264
+ "description": "These fields contain the standard deviation (accuracy) of the heading and tilt angles from the gyrocompass/pendulums."
265
+ },
266
+ "roll_std_dev": {
267
+ "index": 23,
268
+ "unit": "degree",
269
+ "scale": 0.1,
270
+ "byte": 1,
271
+ "type": "uint8",
272
+ "command": "",
273
+ "valid_min": 0,
274
+ "valid_max": 20,
275
+ "long_name": "Roll Standard Deviation",
276
+ "description": "These fields contain the standard deviation (accuracy) of the heading and tilt angles from the gyrocompass/pendulums."
277
+ },
278
+ "adc_channel_0": {
279
+ "index": 24,
280
+ "unit": "",
281
+ "scale": "",
282
+ "byte": "",
283
+ "type": "uint8",
284
+ "command": "",
285
+ "valid_min": "",
286
+ "valid_max": "",
287
+ "long_name": "ADC Channel 0",
288
+ "description": "These fields contain the outputs of the Analog-to-Digital Converter (ADC) located on the DSP board. The ADC sequentially samples one of the eight channels per ping group (the number of ping groups per ensemble is the maximum of the WP). These fields are zeroed at the beginning of the deployment and updated each ensemble at the rate of one channel per ping group."
289
+ },
290
+ "adc_channel_1": {
291
+ "index": 25,
292
+ "unit": "",
293
+ "scale": "",
294
+ "byte": "",
295
+ "type": "uint8",
296
+ "command": "",
297
+ "valid_min": "",
298
+ "valid_max": "",
299
+ "long_name": "ADC Channel 1",
300
+ "description": "These fields contain the outputs of the Analog-to-Digital Converter (ADC) located on the DSP board. The ADC sequentially samples one of the eight channels per ping group (the number of ping groups per ensemble is the maximum of the WP). These fields are zeroed at the beginning of the deployment and updated each ensemble at the rate of one channel per ping group."
301
+ },
302
+ "adc_channel_2": {
303
+ "index": 26,
304
+ "unit": "",
305
+ "scale": "",
306
+ "byte": "",
307
+ "type": "uint8",
308
+ "command": "",
309
+ "valid_min": "",
310
+ "valid_max": "",
311
+ "long_name": "ADC Channel 2",
312
+ "description": "These fields contain the outputs of the Analog-to-Digital Converter (ADC) located on the DSP board. The ADC sequentially samples one of the eight channels per ping group (the number of ping groups per ensemble is the maximum of the WP). These fields are zeroed at the beginning of the deployment and updated each ensemble at the rate of one channel per ping group."
313
+ },
314
+ "adc_channel_3": {
315
+ "index": 27,
316
+ "unit": "",
317
+ "scale": "",
318
+ "byte": "",
319
+ "type": "uint8",
320
+ "command": "",
321
+ "valid_min": "",
322
+ "valid_max": "",
323
+ "long_name": "ADC Channel 3",
324
+ "description": "These fields contain the outputs of the Analog-to-Digital Converter (ADC) located on the DSP board. The ADC sequentially samples one of the eight channels per ping group (the number of ping groups per ensemble is the maximum of the WP). These fields are zeroed at the beginning of the deployment and updated each ensemble at the rate of one channel per ping group."
325
+ },
326
+ "adc_channel_4": {
327
+ "index": 28,
328
+ "unit": "",
329
+ "scale": "",
330
+ "byte": "",
331
+ "type": "uint8",
332
+ "command": "",
333
+ "valid_min": "",
334
+ "valid_max": "",
335
+ "long_name": "ADC Channel 4",
336
+ "description": "These fields contain the outputs of the Analog-to-Digital Converter (ADC) located on the DSP board. The ADC sequentially samples one of the eight channels per ping group (the number of ping groups per ensemble is the maximum of the WP). These fields are zeroed at the beginning of the deployment and updated each ensemble at the rate of one channel per ping group."
337
+ },
338
+ "adc_channel_5": {
339
+ "index": 29,
340
+ "unit": "",
341
+ "scale": "",
342
+ "byte": "",
343
+ "type": "uint8",
344
+ "command": "",
345
+ "valid_min": "",
346
+ "valid_max": "",
347
+ "long_name": "ADC Channel 5",
348
+ "description": "These fields contain the outputs of the Analog-to-Digital Converter (ADC) located on the DSP board. The ADC sequentially samples one of the eight channels per ping group (the number of ping groups per ensemble is the maximum of the WP). These fields are zeroed at the beginning of the deployment and updated each ensemble at the rate of one channel per ping group."
349
+ },
350
+ "adc_channel_6": {
351
+ "index": 30,
352
+ "unit": "",
353
+ "scale": "",
354
+ "byte": "",
355
+ "type": "uint8",
356
+ "command": "",
357
+ "valid_min": "",
358
+ "valid_max": "",
359
+ "long_name": "ADC Channel 6",
360
+ "description": "These fields contain the outputs of the Analog-to-Digital Converter (ADC) located on the DSP board. The ADC sequentially samples one of the eight channels per ping group (the number of ping groups per ensemble is the maximum of the WP). These fields are zeroed at the beginning of the deployment and updated each ensemble at the rate of one channel per ping group."
361
+ },
362
+ "adc_channel_7": {
363
+ "index": 31,
364
+ "unit": "",
365
+ "scale": "",
366
+ "byte": "",
367
+ "type": "uint8",
368
+ "command": "",
369
+ "valid_min": "",
370
+ "valid_max": "",
371
+ "long_name": "ADC Channel 7",
372
+ "description": "These fields contain the outputs of the Analog-to-Digital Converter (ADC) located on the DSP board. The ADC sequentially samples one of the eight channels per ping group (the number of ping groups per ensemble is the maximum of the WP). These fields are zeroed at the beginning of the deployment and updated each ensemble at the rate of one channel per ping group."
373
+ },
374
+ "error_status_word_1": {
375
+ "index": 32,
376
+ "unit": "",
377
+ "scale": "",
378
+ "byte": "",
379
+ "type": "uint8",
380
+ "command": "CY",
381
+ "valid_min": "",
382
+ "valid_max": "",
383
+ "long_name": "ERROR STATUS WORD 1",
384
+ "description": "Contains the long word containing the bit flags for the CY Command. The ESW is cleared (set to zero) between each ensemble."
385
+ },
386
+ "error_status_word_2": {
387
+ "index": 33,
388
+ "unit": "",
389
+ "scale": "",
390
+ "byte": "",
391
+ "type": "uint8",
392
+ "command": "CY",
393
+ "valid_min": "",
394
+ "valid_max": "",
395
+ "long_name": "ERROR STATUS WORD 2",
396
+ "description": "Contains the long word containing the bit flags for the CY Command. The ESW is cleared (set to zero) between each ensemble."
397
+ },
398
+ "error_status_word_3": {
399
+ "index": 34,
400
+ "unit": "",
401
+ "scale": "",
402
+ "byte": "",
403
+ "type": "uint8",
404
+ "command": "CY",
405
+ "valid_min": "",
406
+ "valid_max": "",
407
+ "long_name": "ERROR STATUS WORD 3",
408
+ "description": "Contains the long word containing the bit flags for the CY Command. The ESW is cleared (set to zero) between each ensemble."
409
+ },
410
+ "error_status_word_4": {
411
+ "index": 35,
412
+ "unit": "",
413
+ "scale": "",
414
+ "byte": "",
415
+ "type": "uint8",
416
+ "command": "CY",
417
+ "valid_min": "",
418
+ "valid_max": "",
419
+ "long_name": "ERROR STATUS WORD 4",
420
+ "description": "Contains the long word containing the bit flags for the CY Command. The ESW is cleared (set to zero) between each ensemble."
421
+ },
422
+ "reserved": {
423
+ "index": 36,
424
+ "unit": "",
425
+ "scale": "",
426
+ "byte": "",
427
+ "type": "uint16",
428
+ "command": "",
429
+ "valid_min": "",
430
+ "valid_max": "",
431
+ "long_name": "Reserved",
432
+ "description": "Reserved for TRDI use"
433
+ },
434
+ "pressure": {
435
+ "index": 37,
436
+ "unit": "deca-pascal",
437
+ "scale": 1,
438
+ "byte": 4,
439
+ "type": "uint32",
440
+ "command": "",
441
+ "valid_min": -2147483648,
442
+ "valid_max": 2147483648,
443
+ "long_name": "Pressure",
444
+ "description": "Contains the pressure of the water at the transducer head relative to one atmosphere (sea level). Output is in deca-pascals."
445
+ },
446
+ "pressure_variance": {
447
+ "index": 38,
448
+ "unit": "deca-pascal",
449
+ "scale": 1,
450
+ "byte": 4,
451
+ "type": "uint32",
452
+ "command": "",
453
+ "valid_min": -2147483648,
454
+ "valid_max": 2147483648,
455
+ "long_name": "Pressure Variance",
456
+ "description": "Contains the variance (deviation about the mean) of the pressure sensor data. Output is in deca-pascals."
457
+ },
458
+ "spare": {
459
+ "index": 39,
460
+ "unit": "",
461
+ "scale": "",
462
+ "byte": 4,
463
+ "type": "uint32",
464
+ "command": "",
465
+ "valid_min": -2147483648,
466
+ "valid_max": 2147483648,
467
+ "long_name": "Spare",
468
+ "description": "Reserved for future use."
469
+ },
470
+ "y2k_century": {
471
+ "index": 40,
472
+ "unit": "",
473
+ "scale": "",
474
+ "byte": 1,
475
+ "type": "uint8",
476
+ "command": "",
477
+ "valid_min": "",
478
+ "valid_max": "",
479
+ "long_name": "Y2K Real Time Clock Year",
480
+ "description": "Contains the time from the Y2K compliant real-time clock (RTC) that the current data ensemble began. The TT command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
481
+ },
482
+ "y2k_year": {
483
+ "index": 41,
484
+ "unit": "",
485
+ "scale": "",
486
+ "byte": 1,
487
+ "type": "uint8",
488
+ "command": "",
489
+ "valid_min": "",
490
+ "valid_max": "",
491
+ "long_name": "Y2K Real Time Clock Year",
492
+ "description": "Contains the time from the Y2K compliant real-time clock (RTC) that the current data ensemble began. The TT command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
493
+ },
494
+ "y2k_month": {
495
+ "index": 42,
496
+ "unit": "",
497
+ "scale": "",
498
+ "byte": 1,
499
+ "type": "uint8",
500
+ "command": "",
501
+ "valid_min": "",
502
+ "valid_max": "",
503
+ "long_name": "Y2K Real Time Clock Month",
504
+ "description": "Contains the time from the Y2K compliant real-time clock (RTC) that the current data ensemble began. The TT command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
505
+ },
506
+ "y2k_day": {
507
+ "index": 43,
508
+ "unit": "",
509
+ "scale": "",
510
+ "byte": 1,
511
+ "type": "uint8",
512
+ "command": "",
513
+ "valid_min": "",
514
+ "valid_max": "",
515
+ "long_name": "Y2K Real Time Clock Day",
516
+ "description": "Contains the time from the Y2K compliant real-time clock (RTC) that the current data ensemble began. The TT command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
517
+ },
518
+ "y2k_hour": {
519
+ "index": 44,
520
+ "unit": "",
521
+ "scale": "",
522
+ "byte": 1,
523
+ "type": "uint8",
524
+ "command": "",
525
+ "valid_min": "",
526
+ "valid_max": "",
527
+ "long_name": "Y2K Real Time Clock Hour",
528
+ "description": "Contains the time from the Y2K compliant real-time clock (RTC) that the current data ensemble began. The TT command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
529
+ },
530
+ "y2k_minute": {
531
+ "index": 45,
532
+ "unit": "",
533
+ "scale": "",
534
+ "byte": 1,
535
+ "type": "uint8",
536
+ "command": "",
537
+ "valid_min": "",
538
+ "valid_max": "",
539
+ "long_name": "Real Time Clock (RTC) Minute",
540
+ "description": "Contains the time from the Y2K compliant real-time clock (RTC) that the current data ensemble began. The TT command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
541
+ },
542
+ "y2k_second": {
543
+ "index": 46,
544
+ "unit": "",
545
+ "scale": "",
546
+ "byte": 1,
547
+ "type": "uint8",
548
+ "command": "",
549
+ "valid_min": "",
550
+ "valid_max": "",
551
+ "long_name": "Real Time Clock (RTC) Second",
552
+ "description": "Contains the time from the Y2K compliant real-time clock (RTC) that the current data ensemble began. The TT command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
553
+ },
554
+ "y2k_hundredth": {
555
+ "index": 47,
556
+ "unit": "",
557
+ "scale": "",
558
+ "byte": 1,
559
+ "type": "uint8",
560
+ "command": "",
561
+ "valid_min": "",
562
+ "valid_max": "",
563
+ "long_name": "Real Time Clock (RTC) Hundredth",
564
+ "description": "Contains the time from the Y2K compliant real-time clock (RTC) that the current data ensemble began. The TT command (Set Real-Time Clock) initially sets the clock. The WorkHorse ADCP does account for leap years."
565
+ }
566
+ }
567
+