Last modified by Mengting Qiu on 2023/12/14 11:15

From version 125.6
edited by Xiaoling
on 2023/11/29 09:07
Change comment: There is no comment for this version
To version 119.1
edited by Xiaoling
on 2023/11/28 14:28
Change comment: Uploaded new attachment "1701152902759-553.png", version {1}

Summary

Details

Page properties
Content
... ... @@ -47,8 +47,6 @@
47 47  * Firmware upgradable via program port or LoRa protocol
48 48  * Built-in 2400mAh battery or power by external power source
49 49  
50 -
51 -
52 52  == 1.3 Specification ==
53 53  
54 54  
... ... @@ -62,8 +62,6 @@
62 62  * ToF FoV: ±9°, Total 18°
63 63  * Light source: VCSEL
64 64  
65 -
66 -
67 67  == 1.4 Power Consumption ==
68 68  
69 69  
... ... @@ -77,8 +77,6 @@
77 77  * Idle: 21 mA @ 3.3v
78 78  * Max : 360 mA
79 79  
80 -
81 -
82 82  = 2. Configure DS20L to connect to LoRaWAN network =
83 83  
84 84  == 2.1 How it works ==
... ... @@ -212,120 +212,219 @@
212 212  === 2.3.2 Uplink Payload, FPORT~=2 ===
213 213  
214 214  
215 -==== (% style="color:red" %)**MOD~=1**(%%) ====
209 +(((
210 +DS20L will send this uplink **after** Device Status once join the LoRaWAN network successfully. And DS20L will:
216 216  
217 -Regularly detect distance and report. When the distance exceeds the limit, the alarm flag is set to 1, and the report can be triggered by external interrupts.
212 +periodically send this uplink every 20 minutes, this interval [[can be changed>>||anchor="H3.3.1SetTransmitIntervalTime"]].
218 218  
219 -Uplink Payload totals 10 bytes.
214 +Uplink Payload totals 11 bytes.
215 +)))
220 220  
221 221  (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
222 -|(% style="background-color:#4f81bd; color:white; width:60px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:white; width:30px" %)**2**|(% style="background-color:#4f81bd; color:white; width:130px" %)**1**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**|(% style="background-color:#4f81bd; color:white; width:100px" %)**1**|(% style="background-color:#4f81bd; color:white; width:120px" %)**4**
223 -|(% style="width:91px" %)Value|(% style="width:41px" %)BAT|(% style="width:176px" %)MOD+ Alarm+Interrupt|(% style="width:74px" %)Distance|(% style="width:100px" %)Sensor State|(% style="width:119px" %)Interrupt Count
218 +|=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
219 +**Size(bytes)**
220 +)))|=(% style="width: 30px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 70px;background-color:#4F81BD;color:white" %)**2**|=(% style="background-color:#4F81BD;color:white; width: 80px;" %)**1**|=(% style="background-color: #4F81BD;color:white; width: 70px;" %)**1**|=(% style="background-color: #4F81BD;color:white; width: 70px;" %)**1**
221 +|(% style="width:62.5px" %)Value|(% style="width:62.5px" %)[[BAT>>||anchor="HBatteryInfo"]]|(% style="width:62.5px" %)(((
222 +[[Temperature DS18B20>>||anchor="HDS18B20Temperaturesensor"]]
223 +)))|[[Distance>>||anchor="HDistance"]]|[[Distance signal strength>>||anchor="HDistancesignalstrength"]]|(% style="width:122px" %)(((
224 +[[Interrupt flag & Interrupt_level>>||anchor="HInterruptPin26A0InterruptLevel"]]
225 +)))|(% style="width:54px" %)[[LiDAR temp>>||anchor="HLiDARtemp"]]|(% style="width:96px" %)(((
226 +[[Message Type>>||anchor="HMessageType"]]
227 +)))
224 224  
225 -[[image:1701155076393-719.png]]
229 +[[image:image-20230805104104-2.png||height="136" width="754"]]
226 226  
227 -(% style="color:blue" %)**Battery Info:**
228 228  
229 -Check the battery voltage for DS20L
232 +==== (% style="color:blue" %)**Battery Info**(%%) ====
230 230  
231 -Ex1: 0x0E10 = 3600mV
232 232  
235 +Check the battery voltage for DS20L.
233 233  
234 -(% style="color:blue" %)**MOD & Alarm & Interrupt:**
237 +Ex1: 0x0B45 = 2885mV
235 235  
236 -(% style="color:red" %)**MOD:**
239 +Ex2: 0x0B49 = 2889mV
237 237  
238 -**Example: ** (0x60>>6) & 0x3f =1
239 239  
240 -**0x01:**  Regularly detect distance and report.
241 -**0x02: ** Uninterrupted measurement (external power supply).
242 +==== (% style="color:blue" %)**DS18B20 Temperature sensor**(%%) ====
242 242  
243 -(% style="color:red" %)**Alarm:**
244 244  
245 -When the detection distance exceeds the limit, the alarm flag is set to 1.
245 +This is optional, user can connect external DS18B20 sensor to the +3.3v, 1-wire and GND pin . and this field will report temperature.
246 246  
247 -(% style="color:red" %)**Interrupt:**
248 248  
249 -Whether it is an external interrupt.
248 +**Example**:
250 250  
250 +If payload is: 0105H:  (0105 & FC00 == 0), temp = 0105H /10 = 26.1 degree
251 251  
252 -(% style="color:blue" %)**Distance info:**
252 +If payload is: FF3FH :  (FF3F & FC00 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.
253 253  
254 +
255 +==== (% style="color:blue" %)**Distance**(%%) ====
256 +
257 +
258 +Represents the distance value of the measurement output, the default unit is cm, and the value range parsed as a decimal number is 0-1200. In actual use, when the signal strength value Strength.
259 +
260 +
254 254  **Example**:
255 255  
256 -If payload is: 0708H: distance = 0708H = 1800 mm
263 +If the data you get from the register is 0x0B 0xEA, the distance between the sensor and the measured object is 0BEA(H) = 3050 (D)/10 = 305cm.
257 257  
258 258  
259 -(% style="color:blue" %)**Sensor State:**
266 +==== (% style="color:blue" %)**Distance signal strength**(%%) ====
260 260  
261 -Ex1: 0x00: Normal collection distance
262 262  
263 -Ex2 0x0x: Distance collection is wrong
269 +Refers to the signal strength, the default output value will be between 0-65535. When the distance measurement gear is fixed, the farther the distance measurement is, the lower the signal strength; the lower the target reflectivity, the lower the signal strength. When Strength is greater than 100 and not equal to 65535, the measured value of Dist is considered credible.
264 264  
265 265  
266 -(% style="color:blue" %)**Interript Count:**
272 +**Example**:
267 267  
268 -If payload is:000007D0H: count = 07D0H =2000
274 +If payload is: 01D7(H)=471(D), distance signal strength=471, 471>100,471≠65535, the measured value of Dist is considered credible.
269 269  
276 +Customers can judge whether they need to adjust the environment based on the signal strength.
270 270  
271 271  
272 -==== (% style="color:red" %)**MOD~=2**(%%)** ** ====
279 +**1) When the sensor detects valid data:**
273 273  
274 -Uninterrupted measurement. When the distance exceeds the limit, the output IO is set high and reports are reported every five minutes. The time can be set and powered by an external power supply.Uplink Payload totals 11bytes.
281 +[[image:image-20230805155335-1.png||height="145" width="724"]]
275 275  
283 +
284 +**2) When the sensor detects invalid data:**
285 +
286 +[[image:image-20230805155428-2.png||height="139" width="726"]]
287 +
288 +
289 +**3) When the sensor is not connected:**
290 +
291 +[[image:image-20230805155515-3.png||height="143" width="725"]]
292 +
293 +
294 +==== (% style="color:blue" %)**Interrupt Pin & Interrupt Level**(%%) ====
295 +
296 +
297 +This data field shows if this packet is generated by interrupt or not. [[Click here>>||anchor="H3.3.2SetInterruptMode"]] for the hardware and software set up.
298 +
299 +Note: The Internet Pin is a separate pin in the screw terminal. See pin mapping of GPIO_EXTI .
300 +
301 +**Example:**
302 +
303 +If byte[0]&0x01=0x00 : Normal uplink packet.
304 +
305 +If byte[0]&0x01=0x01 : Interrupt Uplink Packet.
306 +
307 +
308 +==== (% style="color:blue" %)**LiDAR temp**(%%) ====
309 +
310 +
311 +Characterize the internal temperature value of the sensor.
312 +
313 +**Example: **
314 +If payload is: 1C(H) <<24>>24=28(D),LiDAR temp=28℃.
315 +If payload is: F2(H) <<24>>24=-14(D),LiDAR temp=-14℃.
316 +
317 +
318 +==== (% style="color:blue" %)**Message Type**(%%) ====
319 +
320 +
321 +(((
322 +For a normal uplink payload, the message type is always 0x01.
323 +)))
324 +
325 +(((
326 +Valid Message Type:
327 +)))
328 +
329 +(% border="1" cellspacing="5" style="background-color:#f2f2f2; width:499px" %)
330 +|=(% style="width: 161px;background-color:#4F81BD;color:white" %)**Message Type Code**|=(% style="width: 164px;background-color:#4F81BD;color:white" %)**Description**|=(% style="width: 174px;background-color:#4F81BD;color:white" %)**Payload**
331 +|(% style="width:160px" %)0x01|(% style="width:163px" %)Normal Uplink|(% style="width:173px" %)Normal Uplink Payload
332 +|(% style="width:160px" %)0x02|(% style="width:163px" %)Reply configures info|(% style="width:173px" %)Configure Info Payload
333 +
334 +[[image:image-20230805150315-4.png||height="233" width="723"]]
335 +
336 +
337 +=== 2.3.3 Historical measuring distance, FPORT~=3 ===
338 +
339 +
340 +DS20L stores sensor values and users can retrieve these history values via the [[downlink command>>||anchor="H2.5.4Pollsensorvalue"]].
341 +
342 +The historical payload includes one or multiplies entries and every entry has the same payload as Real-Time measuring distance.
343 +
276 276  (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
277 -|(% style="background-color:#4f81bd; color:white; width:70px" %)**Size(bytes)**|(% style="background-color:#4f81bd; color:white; width:40px" %)**2**|(% style="background-color:#4f81bd; color:white; width:130px" %)**1**|(% style="background-color:#4f81bd; color:white; width:130px" %)**4**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**|(% style="background-color:#4f81bd; color:white; width:70px" %)**2**
278 -|(% style="width:91px" %)Value|(% style="width:41px" %)BAT|(% style="width:176px" %)MOD+Alarm+Do+Limit flag|(% style="width:74px" %)Distance Limit Alarm count|(% style="width:100px" %)Upper limit|(% style="width:119px" %)Lower limit
345 +|=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
346 +**Size(bytes)**
347 +)))|=(% style="width: 80px;background-color:#4F81BD;color:white" %)1|=(% style="width: 80px;background-color:#4F81BD;color:white" %)**1**|=(% style="width: 50px;background-color:#4F81BD;color:white" %)**2**|=(% style="width: 70px;background-color:#4F81BD;color:white" %)**2**|=(% style="background-color:#4F81BD; color: white; width: 85px;" %)**1**|=(% style="background-color: #4F81BD; color: white; width: 85px;" %)4
348 +|(% style="width:62.5px" %)Value|(% style="width:62.5px" %)Interrupt flag & Interrupt_level|(% style="width:62.5px" %)(((
349 +Reserve(0xFF)
350 +)))|Distance|Distance signal strength|(% style="width:88px" %)(((
351 +LiDAR temp
352 +)))|(% style="width:85px" %)Unix TimeStamp
279 279  
280 -[[image:1701155150328-206.png]]
354 +**Interrupt flag & Interrupt level:**
281 281  
282 -(% style="color:blue" %)**MOD & Alarm & Do & Limit flag:**
356 +(% border="1" cellspacing="4" style="background-color:#f2f2f2; width:480px" %)
357 +|=(% style="width: 60px;background-color:#4F81BD;color:white" %)(((
358 +**Size(bit)**
359 +)))|=(% style="width: 90px;background-color:#4F81BD;color:white" %)**bit7**|=(% style="width: 90px;background-color:#4F81BD;color:white" %)**bit6**|=(% style="width: 60px;background-color:#4F81BD;color:white" %)**[bit5:bit2]**|=(% style="width: 90px; background-color: #4F81BD; color: white;" %)**bit1**|=(% style="background-color: #4F81BD; color: white; width: 90px;" %)**bit0**
360 +|(% style="width:62.5px" %)Value|(% style="width:62.5px" %)No ACK message|(% style="width:62.5px" %)Poll Message Flag|Reserve|(% style="width:91px" %)Interrupt level|(% style="width:88px" %)(((
361 +Interrupt flag
362 +)))
283 283  
284 -(% style="color:red" %)**MOD:**
364 +* (((
365 +Each data entry is 11 bytes and has the same structure as [[Uplink Payload>>||anchor="H2.3.2UplinkPayload2CFPORT3D2"]], to save airtime and battery, DS20L will send max bytes according to the current DR and Frequency bands.
366 +)))
285 285  
286 -**Example: ** (0x60>>6) & 0x3f =1
368 +For example, in the US915 band, the max payload for different DR is:
287 287  
288 -**0x01:**  Regularly detect distance and report.
289 -**0x02: ** Uninterrupted measurement (external power supply).
370 +**a) DR0:** max is 11 bytes so one entry of data
290 290  
291 -(% style="color:red" %)**Alarm:**
372 +**b) DR1:** max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
292 292  
293 -When the detection distance exceeds the limit, the alarm flag is set to 1.
374 +**c) DR2:** total payload includes 11 entries of data
294 294  
295 -(% style="color:red" %)**Do:**
376 +**d) DR3:** total payload includes 22 entries of data.
296 296  
297 -When the distance exceeds the set threshold, pull the Do pin high.
378 +If DS20L doesn't have any data in the polling time. It will uplink 11 bytes of 0
298 298  
299 -(% style="color:red" %)**Limit flag:**
300 300  
301 -Mode for setting threshold: **0~~5**
381 +**Downlink:**
302 302  
303 -**0:** does not use upper and lower limits
383 +0x31 64 CC 68 0C 64 CC 69 74 05
304 304  
305 -**1:** Use upper and lower limits
385 +[[image:image-20230805144936-2.png||height="113" width="746"]]
306 306  
307 -**2:** is less than the lower limit value
387 +**Uplink:**
308 308  
309 -**3:** is greater than the lower limit value
389 +43 FF 0E 10 00 B0 1E 64 CC 68 0C 40 FF 0D DE 00 A8 1E 64 CC 68 29 40 FF 09 92 00 D3 1E 64 CC 68 65 40 FF 02 3A 02 BC 1E 64 CC 68 A1 41 FF 0E 1A 00 A4 1E 64 CC 68 C0 40 FF 0D 2A 00 B8 1E 64 CC 68 E8 40 FF 00 C8 11 6A 1E 64 CC 69 24 40 FF 0E 24 00 AD 1E 64 CC 69 6D
310 310  
311 -**4:** is less than the upper limit
312 312  
313 -**5:** is greater than the upper limit
392 +**Parsed Value:**
314 314  
394 +[DISTANCE , DISTANCE_SIGNAL_STRENGTH,LIDAR_TEMP,EXTI_STATUS , EXTI_FLAG , TIME]
315 315  
316 -(% style="color:blue" %)**Upper limit:**
317 317  
318 -The upper limit of the threshold cannot exceed 2000mm.
397 +[360,176,30,High,True,2023-08-04 02:53:00],
319 319  
399 +[355,168,30,Low,False,2023-08-04 02:53:29],
320 320  
321 -(% style="color:blue" %)**Lower limit:**
401 +[245,211,30,Low,False,2023-08-04 02:54:29],
322 322  
323 -The lower limit of the threshold cannot be less than 3mm.
403 +[57,700,30,Low,False,2023-08-04 02:55:29],
324 324  
405 +[361,164,30,Low,True,2023-08-04 02:56:00],
325 325  
326 -=== 2.3.3 Decode payload in The Things Network ===
407 +[337,184,30,Low,False,2023-08-04 02:56:40],
327 327  
409 +[20,4458,30,Low,False,2023-08-04 02:57:40],
328 328  
411 +[362,173,30,Low,False,2023-08-04 02:58:53],
412 +
413 +
414 +**History read from serial port:**
415 +
416 +[[image:image-20230805145056-3.png]]
417 +
418 +
419 +=== 2.3.4 Decode payload in The Things Network ===
420 +
421 +
329 329  While using TTN network, you can add the payload format to decode the payload.
330 330  
331 331  [[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LLDS12-LoRaWAN%20LiDAR%20ToF%20Distance%20Sensor%20User%20Manual/WebHome/1654592762713-715.png?rev=1.1||alt="1654592762713-715.png"]]
... ... @@ -372,7 +372,7 @@
372 372  
373 373  After added, the sensor data arrive TTN V3, it will also arrive and show in Datacake.
374 374  
375 -[[image:image-20231129085201-1.png||height="515" width="961"]]
468 +[[image:http://wiki.dragino.com/xwiki/bin/download/Main/User%20Manual%20for%20LoRaWAN%20End%20Nodes/LDDS75%20-%20LoRaWAN%20Distance%20Detection%20Sensor%20User%20Manual/WebHome/image-20220610165129-11.png?width=1088&height=595&rev=1.1||alt="image-20220610165129-11.png"]]
376 376  
377 377  
378 378  == 2.5 Frequency Plans ==
... ... @@ -396,8 +396,6 @@
396 396  
397 397  * LoRaWAN Downlink.  Instruction for different platforms: See [[IoT LoRaWAN Server>>http://wiki.dragino.com/xwiki/bin/view/Main/]] section.
398 398  
399 -
400 -
401 401  == 3.2 General Commands ==
402 402  
403 403  
... ... @@ -458,9 +458,6 @@
458 458  )))
459 459  * (((
460 460  Example 2: Downlink Payload: 0100003C  ~/~/ Set Transmit Interval (TDC) = 60 seconds
461 -
462 -
463 -
464 464  )))
465 465  
466 466  === 3.3.2 Set Interrupt Mode ===
... ... @@ -502,10 +502,9 @@
502 502  * Example 2: Downlink Payload: 06000003  ~/~/  Set the interrupt mode to rising edge trigger
503 503  
504 504  
593 +== 3.3.3 Set work mode ==
505 505  
506 -=== 3.3.3 Set work mode ===
507 507  
508 -
509 509  Feature: Switch working mode
510 510  
511 511  (% style="color:blue" %)**AT Command: AT+MOD**
... ... @@ -524,8 +524,6 @@
524 524  
525 525  * **Example:** 0x0A01  ~/~/  Same as AT+MOD=1
526 526  
527 -
528 -
529 529  === 3.3.4 Set threshold and threshold mode ===
530 530  
531 531  
... ... @@ -546,20 +546,7 @@
546 546  
547 547  
548 548  (% border="1" cellspacing="4" style="background-color:#f2f2f2; width:510px" %)
549 -|(% rowspan="11" style="color:blue; width:120px" %)(((
550 -
551 -
552 -
553 -
554 -
555 -
556 -
557 -
558 -
559 -
560 -
561 -**AT+DOL=5,1800,0,0,400**
562 -)))|(% rowspan="6" style="width:240px" %)The first bit sets the limit mode|(% style="width:150px" %)0: Do not use upper and lower limits
634 +|(% rowspan="11" style="color:blue; width:120px" %)**AT+DOL=5,1800,0,0,400**|(% rowspan="6" style="width:240px" %)The first bit sets the limit mode|(% style="width:150px" %)0: Do not use upper and lower limits
563 563  |(% style="width:251px" %)1: Use upper and lower limits
564 564  |(% style="width:251px" %)2: Less than the lower limit
565 565  |(% style="width:251px" %)3: Greater than the lower limit
... ... @@ -575,8 +575,6 @@
575 575  
576 576  )))
577 577  
578 -
579 -
580 580  (% style="color:blue" %)**Downlink Command: 0x07**
581 581  
582 582  Format: Command Code (0x07) followed by 9bytes.
... ... @@ -585,16 +585,8 @@
585 585  
586 586  * Example 1: Downlink Payload: 070107080064000190  **~-~-->**  AT+MOD=1,1800,100,0,400
587 587  
588 -* Example 2: Downlink Payload: 070200000064000190  **~-~-->**  AT+MOD=2,0,100,0,400
589 589  
590 -* Example 3: Downlink Payload: 070300000064000190  **~-~-->**  AT+MOD=3,1800,100,0,400
591 591  
592 -* Example 4: Downlink Payload: 070407080000000190  **~-~-->**  AT+MOD=4,0,100,0,400
593 -
594 -* Example 5: Downlink Payload: 070507080000000190  **~-~-->**  AT+MOD=5,1800,100,0,400
595 -
596 -
597 -
598 598  = 4. Battery & Power Consumption =
599 599  
600 600  
... ... @@ -623,8 +623,6 @@
623 623  
624 624  * Update through UART TTL interface: **[[Instruction>>url:http://wiki.dragino.com/xwiki/bin/view/Main/UART%20Access%20for%20LoRa%20ST%20v4%20base%20model/#H1.LoRaSTv4baseHardware]]**.
625 625  
626 -
627 -
628 628  = 6. FAQ =
629 629  
630 630  == 6.1 What is the frequency plan for DS20L? ==
... ... @@ -633,33 +633,6 @@
633 633  DS20L use the same frequency as other Dragino products. User can see the detail from this link:  [[Introduction>>doc:Main.End Device Frequency Band.WebHome||anchor="H1.Introduction"]]
634 634  
635 635  
636 -== 6.2 DS20L programming line ==
637 -
638 -
639 -缺图 后续补上
640 -
641 -feature:
642 -
643 -for AT commands
644 -
645 -Update the firmware of DS20L
646 -
647 -Support interrupt mode
648 -
649 -
650 -== 6.3 LiDAR probe position ==
651 -
652 -
653 -[[image:1701155390576-216.png||height="285" width="307"]]
654 -
655 -The black oval hole in the picture is the LiDAR probe.
656 -
657 -
658 -== 6.4 Interface definition ==
659 -
660 -[[image:image-20231128151132-2.png||height="305" width="557"]]
661 -
662 -
663 663  = 7. Trouble Shooting =
664 664  
665 665  == 7.1 AT Command input doesn't work ==
... ... @@ -712,8 +712,6 @@
712 712  
713 713  * (% style="color:red" %)**CN470**(%%): LoRaWAN CN470 band
714 714  
715 -
716 -
717 717  = 9. ​Packing Info =
718 718  
719 719  
... ... @@ -731,8 +731,6 @@
731 731  
732 732  * Weight / pcs : g
733 733  
734 -
735 -
736 736  = 10. Support =
737 737  
738 738  
1701152946067-561.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -52.2 KB
Content
1701155076393-719.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -54.6 KB
Content
1701155150328-206.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -54.6 KB
Content
1701155390576-216.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -293.9 KB
Content
image-20231128151132-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -281.2 KB
Content
image-20231129085201-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.Xiaoling
Size
... ... @@ -1,1 +1,0 @@
1 -70.6 KB
Content