From 22c3128948680f6a7d47b2cf8a7bba7b0bee02df Mon Sep 17 00:00:00 2001 From: cqc Date: Fri, 2 Jan 2026 17:24:29 +0100 Subject: [PATCH] initial commit without secrets :> --- code.py | 140 ++++++++++++++++++ font5x8.bin | Bin 0 -> 1282 bytes lib/adafruit_bus_device/__init__.py | 0 lib/adafruit_bus_device/i2c_device.mpy | Bin 0 -> 1173 bytes lib/adafruit_bus_device/spi_device.mpy | Bin 0 -> 848 bytes lib/adafruit_color_terminal.mpy | Bin 0 -> 2261 bytes lib/adafruit_connection_manager.mpy | Bin 0 -> 3538 bytes lib/adafruit_display_analogclock.mpy | Bin 0 -> 2218 bytes lib/adafruit_display_emoji_text.mpy | Bin 0 -> 2333 bytes .../__init__.mpy | Bin 0 -> 960 bytes lib/adafruit_display_notification/apple.mpy | Bin 0 -> 457 bytes lib/adafruit_display_shapes/__init__.py | 0 lib/adafruit_display_shapes/arc.mpy | Bin 0 -> 1613 bytes lib/adafruit_display_shapes/circle.mpy | Bin 0 -> 585 bytes .../filled_polygon.mpy | Bin 0 -> 1112 bytes lib/adafruit_display_shapes/line.mpy | Bin 0 -> 460 bytes .../multisparkline.mpy | Bin 0 -> 2185 bytes lib/adafruit_display_shapes/polygon.mpy | Bin 0 -> 1627 bytes lib/adafruit_display_shapes/rect.mpy | Bin 0 -> 993 bytes lib/adafruit_display_shapes/roundrect.mpy | Bin 0 -> 1799 bytes lib/adafruit_display_shapes/sparkline.mpy | Bin 0 -> 598 bytes lib/adafruit_display_shapes/triangle.mpy | Bin 0 -> 1152 bytes lib/adafruit_display_text/__init__.mpy | Bin 0 -> 4414 bytes lib/adafruit_display_text/bitmap_label.mpy | Bin 0 -> 7915 bytes lib/adafruit_display_text/label.mpy | Bin 0 -> 3568 bytes lib/adafruit_display_text/outlined_label.mpy | Bin 0 -> 325 bytes lib/adafruit_display_text/scrolling_label.mpy | Bin 0 -> 331 bytes lib/adafruit_display_text/text_box.mpy | Bin 0 -> 3094 bytes lib/adafruit_displayio_flipclock/__init__.mpy | Bin 0 -> 175 bytes .../flip_clock.mpy | Bin 0 -> 1858 bytes .../flip_digit.mpy | Bin 0 -> 2042 bytes lib/adafruit_displayio_layout/__init__.py | 0 .../layouts/__init__.mpy | Bin 0 -> 951 bytes .../layouts/grid_layout.mpy | Bin 0 -> 3338 bytes .../layouts/linear_layout.mpy | Bin 0 -> 1134 bytes .../layouts/page_layout.mpy | Bin 0 -> 1679 bytes .../layouts/tab_layout.mpy | Bin 0 -> 3151 bytes .../widgets/__init__.mpy | Bin 0 -> 60 bytes .../widgets/cartesian.mpy | Bin 0 -> 4680 bytes .../widgets/control.mpy | Bin 0 -> 484 bytes .../widgets/easing.mpy | Bin 0 -> 2167 bytes .../widgets/flip_input.mpy | Bin 0 -> 4730 bytes .../widgets/icon_animated.mpy | Bin 0 -> 3066 bytes .../widgets/icon_widget.mpy | Bin 0 -> 1132 bytes .../widgets/switch_round.mpy | Bin 0 -> 4267 bytes .../widgets/widget.mpy | Bin 0 -> 1040 bytes lib/adafruit_fakerequests.mpy | Bin 0 -> 517 bytes lib/adafruit_framebuf.mpy | Bin 0 -> 5336 bytes lib/adafruit_hashlib/__init__.mpy | Bin 0 -> 691 bytes lib/adafruit_hashlib/_md5.mpy | Bin 0 -> 3337 bytes lib/adafruit_hashlib/_sha1.mpy | Bin 0 -> 1625 bytes lib/adafruit_hashlib/_sha224.mpy | Bin 0 -> 76 bytes lib/adafruit_hashlib/_sha256.mpy | Bin 0 -> 5794 bytes lib/adafruit_hashlib/_sha384.mpy | Bin 0 -> 76 bytes lib/adafruit_hashlib/_sha512.mpy | Bin 0 -> 8023 bytes lib/adafruit_httpserver/__init__.mpy | Bin 0 -> 1622 bytes lib/adafruit_httpserver/authentication.mpy | Bin 0 -> 849 bytes lib/adafruit_httpserver/exceptions.mpy | Bin 0 -> 645 bytes lib/adafruit_httpserver/headers.mpy | Bin 0 -> 1146 bytes lib/adafruit_httpserver/interfaces.mpy | Bin 0 -> 1897 bytes lib/adafruit_httpserver/methods.mpy | Bin 0 -> 155 bytes lib/adafruit_httpserver/mime_types.mpy | Bin 0 -> 3445 bytes lib/adafruit_httpserver/request.mpy | Bin 0 -> 3819 bytes lib/adafruit_httpserver/response.mpy | Bin 0 -> 6658 bytes lib/adafruit_httpserver/route.mpy | Bin 0 -> 1658 bytes lib/adafruit_httpserver/server.mpy | Bin 0 -> 6187 bytes lib/adafruit_httpserver/status.mpy | Bin 0 -> 1159 bytes lib/adafruit_io/__init__.py | 0 lib/adafruit_io/adafruit_io.mpy | Bin 0 -> 7976 bytes lib/adafruit_io/adafruit_io_errors.mpy | Bin 0 -> 398 bytes lib/adafruit_itertools/__init__.mpy | Bin 0 -> 3203 bytes .../adafruit_itertools_extras.mpy | Bin 0 -> 1864 bytes lib/adafruit_json_stream.mpy | Bin 0 -> 2314 bytes lib/adafruit_jwt.mpy | Bin 0 -> 2348 bytes lib/adafruit_led_animation/__init__.mpy | Bin 0 -> 289 bytes .../animation/__init__.mpy | Bin 0 -> 1547 bytes .../animation/blink.mpy | Bin 0 -> 402 bytes .../animation/chase.mpy | Bin 0 -> 1137 bytes .../animation/colorcycle.mpy | Bin 0 -> 598 bytes .../animation/comet.mpy | Bin 0 -> 1345 bytes .../animation/customcolorchase.mpy | Bin 0 -> 545 bytes .../animation/grid_rain.mpy | Bin 0 -> 1330 bytes .../animation/multicolor_comet.mpy | Bin 0 -> 930 bytes .../animation/pacman.mpy | Bin 0 -> 1167 bytes .../animation/pulse.mpy | Bin 0 -> 680 bytes .../animation/rainbow.mpy | Bin 0 -> 1356 bytes .../animation/rainbowchase.mpy | Bin 0 -> 589 bytes .../animation/rainbowcomet.mpy | Bin 0 -> 679 bytes .../animation/rainbowsparkle.mpy | Bin 0 -> 889 bytes .../animation/solid.mpy | Bin 0 -> 303 bytes .../animation/sparkle.mpy | Bin 0 -> 1189 bytes .../animation/sparklepulse.mpy | Bin 0 -> 805 bytes .../animation/volume.mpy | Bin 0 -> 744 bytes lib/adafruit_led_animation/color.mpy | Bin 0 -> 1000 bytes lib/adafruit_led_animation/grid.mpy | Bin 0 -> 1464 bytes lib/adafruit_led_animation/group.mpy | Bin 0 -> 1270 bytes lib/adafruit_led_animation/helper.mpy | Bin 0 -> 1982 bytes .../pulse_generator.mpy | Bin 0 -> 483 bytes lib/adafruit_led_animation/sequence.mpy | Bin 0 -> 2148 bytes lib/adafruit_led_animation/timedsequence.mpy | Bin 0 -> 574 bytes lib/adafruit_logging.mpy | Bin 0 -> 4700 bytes lib/adafruit_ntp.mpy | Bin 0 -> 1242 bytes lib/adafruit_pathlib.mpy | Bin 0 -> 2751 bytes lib/adafruit_requests.mpy | Bin 0 -> 7022 bytes lib/adafruit_rsa/__init__.mpy | Bin 0 -> 516 bytes lib/adafruit_rsa/_compat.mpy | Bin 0 -> 1000 bytes lib/adafruit_rsa/asn1.mpy | Bin 0 -> 768 bytes lib/adafruit_rsa/common.mpy | Bin 0 -> 1006 bytes lib/adafruit_rsa/core.mpy | Bin 0 -> 709 bytes lib/adafruit_rsa/key.mpy | Bin 0 -> 5717 bytes lib/adafruit_rsa/machine_size.mpy | Bin 0 -> 658 bytes lib/adafruit_rsa/pem.mpy | Bin 0 -> 883 bytes lib/adafruit_rsa/pkcs1.mpy | Bin 0 -> 2614 bytes lib/adafruit_rsa/prime.mpy | Bin 0 -> 1044 bytes lib/adafruit_rsa/randnum.mpy | Bin 0 -> 578 bytes lib/adafruit_rsa/transform.mpy | Bin 0 -> 1425 bytes lib/adafruit_simple_text_display.mpy | Bin 0 -> 1742 bytes lib/adafruit_simplemath.mpy | Bin 0 -> 411 bytes lib/adafruit_ssd1306.mpy | Bin 0 -> 2808 bytes lib/asyncio/__init__.mpy | Bin 0 -> 473 bytes lib/asyncio/core.mpy | Bin 0 -> 3312 bytes lib/asyncio/event.mpy | Bin 0 -> 388 bytes lib/asyncio/funcs.mpy | Bin 0 -> 1147 bytes lib/asyncio/lock.mpy | Bin 0 -> 597 bytes lib/asyncio/stream.mpy | Bin 0 -> 2203 bytes lib/asyncio/task.mpy | Bin 0 -> 1403 bytes lib/asyncio/traceback.mpy | Bin 0 -> 649 bytes lib/bitmapfont.mpy | Bin 0 -> 1489 bytes lib/neopixel.mpy | Bin 0 -> 1315 bytes lib/neopixel_spi.mpy | Bin 0 -> 1234 bytes 130 files changed, 140 insertions(+) create mode 100755 code.py create mode 100755 font5x8.bin create mode 100755 lib/adafruit_bus_device/__init__.py create mode 100755 lib/adafruit_bus_device/i2c_device.mpy create mode 100755 lib/adafruit_bus_device/spi_device.mpy create mode 100755 lib/adafruit_color_terminal.mpy create mode 100755 lib/adafruit_connection_manager.mpy create mode 100755 lib/adafruit_display_analogclock.mpy create mode 100755 lib/adafruit_display_emoji_text.mpy create mode 100755 lib/adafruit_display_notification/__init__.mpy create mode 100755 lib/adafruit_display_notification/apple.mpy create mode 100755 lib/adafruit_display_shapes/__init__.py create mode 100755 lib/adafruit_display_shapes/arc.mpy create mode 100755 lib/adafruit_display_shapes/circle.mpy create mode 100755 lib/adafruit_display_shapes/filled_polygon.mpy create mode 100755 lib/adafruit_display_shapes/line.mpy create mode 100755 lib/adafruit_display_shapes/multisparkline.mpy create mode 100755 lib/adafruit_display_shapes/polygon.mpy create mode 100755 lib/adafruit_display_shapes/rect.mpy create mode 100755 lib/adafruit_display_shapes/roundrect.mpy create mode 100755 lib/adafruit_display_shapes/sparkline.mpy create mode 100755 lib/adafruit_display_shapes/triangle.mpy create mode 100755 lib/adafruit_display_text/__init__.mpy create mode 100755 lib/adafruit_display_text/bitmap_label.mpy create mode 100755 lib/adafruit_display_text/label.mpy create mode 100755 lib/adafruit_display_text/outlined_label.mpy create mode 100755 lib/adafruit_display_text/scrolling_label.mpy create mode 100755 lib/adafruit_display_text/text_box.mpy create mode 100755 lib/adafruit_displayio_flipclock/__init__.mpy create mode 100755 lib/adafruit_displayio_flipclock/flip_clock.mpy create mode 100755 lib/adafruit_displayio_flipclock/flip_digit.mpy create mode 100755 lib/adafruit_displayio_layout/__init__.py create mode 100755 lib/adafruit_displayio_layout/layouts/__init__.mpy create mode 100755 lib/adafruit_displayio_layout/layouts/grid_layout.mpy create mode 100755 lib/adafruit_displayio_layout/layouts/linear_layout.mpy create mode 100755 lib/adafruit_displayio_layout/layouts/page_layout.mpy create mode 100755 lib/adafruit_displayio_layout/layouts/tab_layout.mpy create mode 100755 lib/adafruit_displayio_layout/widgets/__init__.mpy create mode 100755 lib/adafruit_displayio_layout/widgets/cartesian.mpy create mode 100755 lib/adafruit_displayio_layout/widgets/control.mpy create mode 100755 lib/adafruit_displayio_layout/widgets/easing.mpy create mode 100755 lib/adafruit_displayio_layout/widgets/flip_input.mpy create mode 100755 lib/adafruit_displayio_layout/widgets/icon_animated.mpy create mode 100755 lib/adafruit_displayio_layout/widgets/icon_widget.mpy create mode 100755 lib/adafruit_displayio_layout/widgets/switch_round.mpy create mode 100755 lib/adafruit_displayio_layout/widgets/widget.mpy create mode 100755 lib/adafruit_fakerequests.mpy create mode 100755 lib/adafruit_framebuf.mpy create mode 100755 lib/adafruit_hashlib/__init__.mpy create mode 100755 lib/adafruit_hashlib/_md5.mpy create mode 100755 lib/adafruit_hashlib/_sha1.mpy create mode 100755 lib/adafruit_hashlib/_sha224.mpy create mode 100755 lib/adafruit_hashlib/_sha256.mpy create mode 100755 lib/adafruit_hashlib/_sha384.mpy create mode 100755 lib/adafruit_hashlib/_sha512.mpy create mode 100755 lib/adafruit_httpserver/__init__.mpy create mode 100755 lib/adafruit_httpserver/authentication.mpy create mode 100755 lib/adafruit_httpserver/exceptions.mpy create mode 100755 lib/adafruit_httpserver/headers.mpy create mode 100755 lib/adafruit_httpserver/interfaces.mpy create mode 100755 lib/adafruit_httpserver/methods.mpy create mode 100755 lib/adafruit_httpserver/mime_types.mpy create mode 100755 lib/adafruit_httpserver/request.mpy create mode 100755 lib/adafruit_httpserver/response.mpy create mode 100755 lib/adafruit_httpserver/route.mpy create mode 100755 lib/adafruit_httpserver/server.mpy create mode 100755 lib/adafruit_httpserver/status.mpy create mode 100755 lib/adafruit_io/__init__.py create mode 100755 lib/adafruit_io/adafruit_io.mpy create mode 100755 lib/adafruit_io/adafruit_io_errors.mpy create mode 100755 lib/adafruit_itertools/__init__.mpy create mode 100755 lib/adafruit_itertools/adafruit_itertools_extras.mpy create mode 100755 lib/adafruit_json_stream.mpy create mode 100755 lib/adafruit_jwt.mpy create mode 100755 lib/adafruit_led_animation/__init__.mpy create mode 100755 lib/adafruit_led_animation/animation/__init__.mpy create mode 100755 lib/adafruit_led_animation/animation/blink.mpy create mode 100755 lib/adafruit_led_animation/animation/chase.mpy create mode 100755 lib/adafruit_led_animation/animation/colorcycle.mpy create mode 100755 lib/adafruit_led_animation/animation/comet.mpy create mode 100755 lib/adafruit_led_animation/animation/customcolorchase.mpy create mode 100755 lib/adafruit_led_animation/animation/grid_rain.mpy create mode 100755 lib/adafruit_led_animation/animation/multicolor_comet.mpy create mode 100755 lib/adafruit_led_animation/animation/pacman.mpy create mode 100755 lib/adafruit_led_animation/animation/pulse.mpy create mode 100755 lib/adafruit_led_animation/animation/rainbow.mpy create mode 100755 lib/adafruit_led_animation/animation/rainbowchase.mpy create mode 100755 lib/adafruit_led_animation/animation/rainbowcomet.mpy create mode 100755 lib/adafruit_led_animation/animation/rainbowsparkle.mpy create mode 100755 lib/adafruit_led_animation/animation/solid.mpy create mode 100755 lib/adafruit_led_animation/animation/sparkle.mpy create mode 100755 lib/adafruit_led_animation/animation/sparklepulse.mpy create mode 100755 lib/adafruit_led_animation/animation/volume.mpy create mode 100755 lib/adafruit_led_animation/color.mpy create mode 100755 lib/adafruit_led_animation/grid.mpy create mode 100755 lib/adafruit_led_animation/group.mpy create mode 100755 lib/adafruit_led_animation/helper.mpy create mode 100755 lib/adafruit_led_animation/pulse_generator.mpy create mode 100755 lib/adafruit_led_animation/sequence.mpy create mode 100755 lib/adafruit_led_animation/timedsequence.mpy create mode 100755 lib/adafruit_logging.mpy create mode 100755 lib/adafruit_ntp.mpy create mode 100755 lib/adafruit_pathlib.mpy create mode 100755 lib/adafruit_requests.mpy create mode 100755 lib/adafruit_rsa/__init__.mpy create mode 100755 lib/adafruit_rsa/_compat.mpy create mode 100755 lib/adafruit_rsa/asn1.mpy create mode 100755 lib/adafruit_rsa/common.mpy create mode 100755 lib/adafruit_rsa/core.mpy create mode 100755 lib/adafruit_rsa/key.mpy create mode 100755 lib/adafruit_rsa/machine_size.mpy create mode 100755 lib/adafruit_rsa/pem.mpy create mode 100755 lib/adafruit_rsa/pkcs1.mpy create mode 100755 lib/adafruit_rsa/prime.mpy create mode 100755 lib/adafruit_rsa/randnum.mpy create mode 100755 lib/adafruit_rsa/transform.mpy create mode 100755 lib/adafruit_simple_text_display.mpy create mode 100755 lib/adafruit_simplemath.mpy create mode 100755 lib/adafruit_ssd1306.mpy create mode 100755 lib/asyncio/__init__.mpy create mode 100755 lib/asyncio/core.mpy create mode 100755 lib/asyncio/event.mpy create mode 100755 lib/asyncio/funcs.mpy create mode 100755 lib/asyncio/lock.mpy create mode 100755 lib/asyncio/stream.mpy create mode 100755 lib/asyncio/task.mpy create mode 100755 lib/asyncio/traceback.mpy create mode 100755 lib/bitmapfont.mpy create mode 100755 lib/neopixel.mpy create mode 100755 lib/neopixel_spi.mpy diff --git a/code.py b/code.py new file mode 100755 index 0000000..031e793 --- /dev/null +++ b/code.py @@ -0,0 +1,140 @@ +print("\nchaos minimap!") +import os +import wifi +import adafruit_connection_manager +import adafruit_requests +import json +import time +import board +import busio +import displayio +import terminalio +from adafruit_display_text import label + +# Import the SSD1306 module. +import adafruit_ssd1306 + +from secrets import hauk_endpoint,hauk_session,hauk_slug,hauk_name + +# Create the I2C interface. +i2c = busio.I2C(board.D7, board.D8) + +# Create the SSD1306 OLED class. +# The first two parameters are the pixel width and pixel height. Change these +# to the right size for your display! +display = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c) + +pool = adafruit_connection_manager.get_radio_socketpool(wifi.radio) +ssl_context = adafruit_connection_manager.get_radio_ssl_context(wifi.radio) +requests = adafruit_requests.Session(pool, ssl_context) + +locavg = [] +def location_avg(): + global locavg + if len(locavg) > 10: + locavg = locavg[1:] + lavg = list(zip(*locavg)) + print(lavg[0], lavg[1]) + lavg = (sum(lavg[0])/len(lavg[0]), sum(lavg[1])/len(lavg[1])) + return lavg + +def update_location(): + global locavg + print('scanning',) + wifi.radio.stop_scanning_networks() + time.sleep(2) + ns = wifi.radio.start_scanning_networks() + wifi_peers = [] + for n in ns: + #print(n.ssid, n.bssid.hex(':'), n.rssi, n.channel) + wifi_peers.append({"bssid": n.bssid.hex(':'), "ssid": n.ssid, "rssi": n.rssi}) + + #print(wifi_peers) + wifi.radio.stop_scanning_networks() + print('loc request') + + data = json.dumps(wifi_peers) + print(data) + lat,lon=0,0 + with requests.post(f"{hauk_endpoint}/location", data=data) as response: + #print(response.text) + j = response.json() + if 'triangulation' in j: + print(j['triangulation']) + lat = j['triangulation']['Position']['Lat'] + lon = j['triangulation']['Position']['Lon'] + else: + print('no location received') + + locavg.append((lat,lon)) + lavg = location_avg() + print(lavg) + form_data={"sid":hauk_session, "lat":lavg[0],"lon":lavg[1], "time":0.0, "pwd":""} + print(form_data) + with requests.post("{hauk_endpoint}/api/post.php", data=form_data) as r: + print('post.php', r.text) + +import math + +def haversine(coord1, coord2): + """ + Calculate the great-circle distance between two points on the Earth + specified in decimal degrees (latitude and longitude). + + Parameters: + coord1 (tuple): (latitude, longitude) for point 1 + coord2 (tuple): (latitude, longitude) for point 2 + + Returns: + float: distance in kilometers between the two points + """ + + # Convert latitude and longitude from degrees to radians + lat1, lon1 = map(math.radians, coord1) + lat2, lon2 = map(math.radians, coord2) + + # Haversine formula + dlon = lon2 - lon1 + dlat = lat2 - lat1 + a = math.sin(dlat / 2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon / 2)**2 + c = 2 * math.asin(math.sqrt(a)) + + # Radius of Earth in kilometers (mean radius) + r = 6371.0 + + return c * r + +def update_display(): + display.fill(0) + display.text("freeside minimap!", 0, 0, 1) + l = {} + with requests.get(f"{hauk_endpoint}/api/fetch.php?id={hauk_slug}&since=0") as r: + #print('fetch.php', r.text) + l = r.json() + + print(l) + + d = location_avg() + for (name,val), i in zip(l['points'].items(), range(len(l['points']))): + if len(val) > 0: + distance = haversine(d, (val[0][0],val[0][1])) + else: + distance = float('inf') + print(name, "is", distance) + display.text(f"{name}: {distance}", 0, 10*(i+1), 1) + display.show() + +display.fill(0) +display.text("freeside minimap!", 0, 0, 1) +display.show() + +def code_update(): + + +while True: + try: + update_location() + update_display() + except Exception as e: + raise e + diff --git a/font5x8.bin b/font5x8.bin new file mode 100755 index 0000000000000000000000000000000000000000..9a0563ba2dae1dc1d0b1b7ecb2e54e5113f3f540 GIT binary patch literal 1282 zcmXw3F>l*e5I$10{Ai>OqY^L;uo9&xs-z5NTtlD*ih5KiLlo?$F36^GP|Jyf4E0jD zLuHrZ%h+xn(jh<#Btfzi{RKsb0$utax^(lZ!Ki^k0DC8(cjWQCyLaDxJf5_~fW&+B z;F0H@JUH=8FY!#nObZw6zn4 zjUs@K#rYN*rdNEO1Pkd*mPTsc^S>BBnV1y6d{|k5ZDVrxgKR8=zjT7sOycL8lr6GBq8Oxc(z-zxK-+Mhj)*4rXS~& ziIRIf3is{<)s(5DfD56>lB^Iqhuks)D~cvu)Pulrf*`1)sS78HA_G{e%EsHbKTZTw zlnDe=j{JBBgjNr*o!F)XYfKV~Qm!*Ms#SyTIr-QCQL2j44XQ5ZR$?MQ)8#gIgE}JY zUR+!x!P96r0M^3K1K;57w-^vT*{$8Kxy9G79~at~dya(SQ8|v!{0h?Tm1E>=Me!NG zQT+6@upP(oXdA1Iw&N)J9H5{0Aor&|kopOq;s=<{>UZk1B#Qg=zDbmK zdviD#*lpi0pSOG5n!r!5UQIi_Ua!-^E_K{$R;>=w@cy&A8}p63ncDcr`u)39%^}no zG7qM{Js1o(9nLG~aK5r~I(={b-n7R#eXjlxWKa*xLD)u7-ocauKs%Vu#rfD;6hTA#%t}%>Prt4SAT-VpMl7?3aqa{k4 zVLqUXoV3*lk5&uG7F(QN1fXMU0CVMvP}T_ViUQXNMRL7Zt?B>6U*QUAP+Ey<&~IRl z27O3ULqd9nM;1YJW+XEbeBx1r&Tf+6&^W<-I2>-JvYgM$De7??`o|b>6`oo}i=6Vy zcbD&8n$56j?w(4gyY_Hz&$b7Xf&JT)gPo3tpAk|?lF}wg5R8L>?+*jcgW*2MVp8t! r=UA7qlM~h|w5qNAP4y=Jc^C##(KN7mCP`3|q#~?;uvP#Ug;>IW4$UpB literal 0 HcmV?d00001 diff --git a/lib/adafruit_bus_device/__init__.py b/lib/adafruit_bus_device/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/lib/adafruit_bus_device/i2c_device.mpy b/lib/adafruit_bus_device/i2c_device.mpy new file mode 100755 index 0000000000000000000000000000000000000000..f91936026fe0d20981fd0e6f9b7674b41ae50eb3 GIT binary patch literal 1173 zcmZuu&2Jh<9R2NLFu@dtWi!TRZBxGLZVAMIQ5#hiwW)=zewf6Sg(_>!E<;!uvuIfy z`%r0ct%h6La}K@ci0w4@s!{%fUV3Q$jUGF@;MS^g*?sfgyx+&0O%JS;TpNvMqh$_s zOHl`XrAbb7jpX#aHig;V83etSeoSC-&unN!ZD>b(XFUQwi+%fmzUf)I(QS0V>(G8i z>)prT+0Ji*kJZ!-kRB4&MeUG{L90bfSl%~vi`*hsHQm(M481d}ZFH4s3IBRFpIs}0 zz)Dq|!QebKToR0drSz?aX+gk-q}v3fcc+w}A)85f*b*R37E&6`rb+sJNGeLtG*qIr z40F0648LDA*?cY2I9BwoWx)A%;E6pTgJ}mSR-1Gc`;w!}Q}sXE_QHa%-yx(2$TH8A zj-eev)IaDt;47>sC&Xk~bQJ}V!fN#lhI04T&%-`vBJik#77X`AdnE?#oCLPZ6e4n} z*|`u1*yx1i?RO{@8bi)-m)n-r>p#fl9_ve=8LG1o%>J*+z8HqcL9hSG^88h>pmTb~ml*fGaGm2a? z7oCw@*j1;NFf z(0e$Q0G!^-0}2#*9H?pBkDo@8fl-t$jb@*Po`s&!OtXA(C-ebcMFITbLz#P20DSjR z1}F-uHH6dxhZk-ic^q|)A*Ko{MPc?A)q)EziZ|7VpY<{v-NH zvXZzQNAT4+GJjp!8jFz<)N9%g-aqMxmhpm|2_jmi{#5$9_E%*~xOZ9PejkUixHt~a zU!vd@Lf54W{+1=`SZeRENdLE7RG@sh9uudi`nwuZr9o zyX~@F;|hhYk?<0Qe?{V}(#XZS58Dg=6`B4VU)!h(ycnY;u5RCdzXX-sSR1asm_c#* z{#u?sU$yxJTXR=?`tcw9azv)T9G2s2$&*+-{q62M{M%ntgSN?DAiw7 n>QzxF4vXAxw(2Bei(yCnvM#JAc;@)K$dLo~=Czx?2Q}>#L9vp}!h zA|ZI;yQ~WO0^$pJA&Dkl@e0OErv)~dZ_b?g<~wK4ydMU}ggLFMZCQ@a)QV%PRl27W znzv2;8s^L}-X@piZva{ASDFhj>HlP)g=|)4VL!d*4IITCf!T)@95rTZC zZh)-l+d9+gi;WeBfmppd@r%$@u8^CU1d%r@9cj2vY*iyn-=pfDR(B|%isn=;jd5fe zbIT`dVaU&I112@yRBc+Pgu$S_uQO6pnV}jEGr9QT)4rfx zr_=<*tftz22_i8XTl%(RQAivvhMY!+UB;@qM=kEZp{jsX)uN`sQU1}?p@irGQQHAP zxQ)0|2z96mw1l3S8e^vYB%kMhU2`fqV(jK`V$RRr(`~^u@-BQAbeGAhr>KYRg-N`Q8Rd!Ji@{jovw~{@$C+Ww2&II`F z?PLH4I1X}rCmF=S@=|a;I`BuCFE0siPzVnW0e-Mn0Mt9_!@VUUykl~#_axyy9B9Rl z0?`y6LcKU$8WYB06@@FQ;}3%FzF41I6w00yi}e>l$+tlQMLa2jkS8G&^`vO=7R*%F7t6Q za=dZTola)5!y~Sq86D1Mv!m&3VWi!+*p|C)6x|DDUmR^s3g1$#x2Nt)PZCf5p112i m_qU>)wJy)k+_~lT?``FKr`${Ha^uy{`CPeU>V6T*tK>gfr}ioU literal 0 HcmV?d00001 diff --git a/lib/adafruit_color_terminal.mpy b/lib/adafruit_color_terminal.mpy new file mode 100755 index 0000000000000000000000000000000000000000..a36f4a40b4b4ac514822ca3fad219ac8c61a71ab GIT binary patch literal 2261 zcmZ8gOK=m}6@A_Q3CF;5OX=|pjxA(cwk4sT8vz3eR;z8<$iD_l$V`&9T58)}BU>t| z1$Z-b3j>}SszT+nnnkk9B8#+sb~2SLuwj_VHVcZXfvmilrBjtvDwEs#P|T?6s?WXm zy!-C&g*wroNHU33Vl7vY6(N~PXL5ofK5MB1I*MyI>IZok`y@Xf?+Xo|{i(vr-P(6fk8Q zp*9<)_6aX)pYVbBK_);Lkne-Ow z^$i88g0zK(jjrRSqc1DpmC{0fBawpYu;E%adV^aRqP|QzB_s>EJaqf+_q1(f1AB82 zMl&D@G*EB3Aa6l{wM0@v?Ku%qMkNANA|YEgk;_X$Vk<8nY$~Bh z!fiQUNTi!ZAzBb_OS!z9*%AbV1tBM8Gl2ZTg&VWN@}jU5oSRx+o)TskxT&}>A6!D7 zbLWfWIGfABMksKb*|e6~Qc!=gkXJIBZ$~sBO6j!F=*Jo~7HOL%MY^jXEu-DkPFNbX zCNn7s_2iYD(LFMcif6Sul(bdYlyZt%%GToPW$(zdbzHPx3&Xl<1nPNI&UW@D_zT+nAOe1%w5-yh~&e%G9B_=mqW zD<qS19v*eGhO{1bVq+D-3b;Gcu(}3XcORWz(4Bmrn^^M zl!|-AB0eeJ$EU;{d|G^fvG@@8ijOcQYS=99VvDHa9|MO5&U?V=1J3)v`2aX)fYT40 zpNMp1*^lr5L(&6$l6YXj_JQ5Y>dDVMyJI{3J12Lp?DX!MdgthQJU}n-JRWqk-IzeM zwRh1^Fa+)QlXSq}Mql-})2zRPp6OlkcY=KqzFqJQ@=4RLX8!a$V#dl}AFzPkrV1N2`N z0V>99_y1>r`-ZcQc4D^T-+yn=9vC#uKo5adKlvzTd-%uS%z|k*#&T7NOm%}&WJtZw zR1IdCIO62>J{QP2Rda&s zuIYWA8vo{>+!7Vt!(N8`ifa3dQGkz6J~qwz{V{c0H4TMqp+U};vJD1#*VvkU&F*%g zr+DH(J!Bti)J?q-Wr)vTasN>(+A$T^8R8}Pt*V0(#mp=2Uuxx9rFeA6aux09u+k*l zfK&MVH(Uh1)XL`!@lD9u@`-idEAEzFEgo0gBoL3E*Gg2p%n&gn2z#xpSEEM+p^cQ1eR-*^-uSE|_{5^>Ov}Cz} zF9wKbRUxwQyk@zCKMW9|MFU(85Zru?ioE8+RHPO?WIr~nS6c3$e&2n-&eibGUUAdv zfp*AFviiMp#YrabFI~4>f|DJs zdkQ1efW==55MJ`&korZ%5(*%Oc&0wDgmQ4Dg$36N=1Q-*gl_g2vtNO)c`9_B`sENj z3q!L^>t-L&_@w$J`)6&h@*2iu2~_r?0oV<9jfz)|884Ris!0DDbgWK# zeU5pb54?@=xAdwL&%KNka|tPX-%mF!_J`gxDzn literal 0 HcmV?d00001 diff --git a/lib/adafruit_connection_manager.mpy b/lib/adafruit_connection_manager.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b5b79fe2cf569fd5987cfe76b3fe52690ba22252 GIT binary patch literal 3538 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_analogclock.mpy b/lib/adafruit_display_analogclock.mpy new file mode 100755 index 0000000000000000000000000000000000000000..57b8511e84b2537cf5f60c3ceda6c635d2fff6b7 GIT binary patch literal 2218 zcmZux-*XaI6ut{2rG&)G?z&=v$qE~i0D%}GZBuIvL8H-XsKJQs%(_`t*a@&ZyNg0Q zoi5Z`+sWVH)aiRCo1oU8eW-1p`qYQM`PP3Rlc_%T?h;6%X2{)h&OPUz?|kRnJKGJ0 zK6f1Fa@;kgB5G_-ROKR9W4SU{l=6I0;#Z<_4eWE4IIRGfj-OcK@F+M6sd-=$SHKkQ5=eC>Dh|Ma+SCC!E{fVl}jvH}_oUxMiUTQXQ8z5>2RT z(N+$&X!*F4Rz~2OQ>2OvycfzTQC-DO_2VIYlV*HC8O=gesU+B#qO=a^4D8S)MCj=Ts}z^xL=E zN5bViYXX*m8%ZWM5`Ejd?iP!{D~na3$f^Y{Cn%_Y`JFD*=n}UgusfhM;JhXli{RMX z6L;Fj?BYr+wQ@&avvr)kt@g9BB$hSc?+k-1siG!IWiV>(s4UkapBEJ#HOP7D!udtu zGzS8>c&R8U0IGt9(3b>IAA<;@^o1mqfJ3UH{~B<}Rp7cI=FsFi&=9)|f|xI$SgxE$ z$2nvXkm`ykZ`0n*ODgDA#WJ8+_PU^`2novq$g+wcOGt{1CmLft4Z^q6OT>);=-vId zEWvW6w2X$xnpalga$-dV%pPNF=JwiJHPO3hYgvN3EGD^Dj;Ys-dpJGu)=eRYDBq^I zk*F`>0)iwc9J(!ynA5BZxLdV=`VH7(ovnhlR0B3NE>>$;9^DEJbj=quO;)F4vAn1i zD$7w`D#hA2I5yLMRAy2C(BraD(+Y@EbXlz@X4f5zqHy4{IqehCgtc_R77p5K)inL( zSD>rU1h~ua-QwsVc9quqPX&X)NMz_Flhe}!Hp+%pJ7q_!gL0s?i|W#0cL*DJ$Jb4D zXLaaA^1D7Kfp z{pFESMyBbpJWWfqc!oJI`GZlWLgVRSVC=^s@eGo`!u<@Kx&^XL!%IC%zevqD^-N>S z@E%B}9-$StlirOfY{F)E4;tQnQ(bSV1BTc4i{U+lyA0w0`r)4%M1LHsZ^rG0cM$L0 z(J{k2^f3M6@6=y9-UEqxya5a^-Hxl9{)h42dK~%r9~y*Tzl8U}fI%FF4ASB^k@v7c z&}7gchNrNsVG1-7wlnC-^it4+k~5x+K@2gTOZ9&*U-@S?l+7ZQ95IMPW)v|-K$<1axb8mIZ5ybI}3?9eWvnM8OK~Iptop=`!gA@27<7sTJzCyfV zFcQGvI78?ehNx#kHhAO#B<{z5z=9;oz>w(N5S{A%?lcx-Ymb4mYRcQWBfB+LYc zM@Gg*BKfwkerxMDXRmyw|E#+L!9?O{7(Cz5lhvi)*Vb_xdAwnT-P_uDIfZR){$ZHL YkM|n?Y?8tI4?;G?QfmP0*=&>lA49sl_W%F@ literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_emoji_text.mpy b/lib/adafruit_display_emoji_text.mpy new file mode 100755 index 0000000000000000000000000000000000000000..5322b76750e17249b414cc215a6c36fdb84a8cb2 GIT binary patch literal 2333 zcmbV~ZEO=|9KfIJ+O?Je$KCB#0oifwx|eS4m|KMbx^>-4HyA6ltHqG>*51~`wpV&L zXeG#XBaRS^@uQzf{J!$O+|Opx-no)lh8&{O~|s4TRPSV;9N_g zbwWy#r&1c)C`>5R*`%DE0w^Fx$ScQIbkd@#2?bEbP()S=G8d-O#as&21aPg$UU68n zJQXU)bL}I@o^zF$1CTejyeL0+*U?l_?0qQ7Ny= zN>&gMDF}HfrvUldy6m7B8A5AjXqz!h#8jGtJ0?mqU6hoa&PaI?`c_iHrDN48s3Kzt zr8F(4cKdu&vX+{j@FtXuZ+UvY-sQK_C+8FJX2yzI3L*!WUJf3b5HVg3SR+e`i!0My zR+5sOrf^B+Sk}my6FF7VIAxN^{Np$&DKB+%%k^L%UKQ@LvQ|`7uackg zAxmq;chqyd`}GsTGd6E7JB2I_&sDGJ)jdV8@`qggr*g$avp9Qb5@ZLDpqo2>0$CcL zyoOsZ7tN~Extx;Mp#G)Tb}H>~5O3;^0XKYmTuD8=$;6sqtzxTSHM3?|EvyCBYPMP@ ztu4eR+h!|kjgv31J||+^BOQpeZ?JY&vG#C+_%L~zJ77QEzUh-nyT4<;2zGw7ks z5KOf|wV2#MZcICYc4F!U>cx}-k}(|tI)VxOJyZ?)jQ}xWss^$e^t;y(OkF^JO#MKE zm_~p`4En=q2&PUTthczGpIbDloLk%t@~T09?FAXd6b1@oiU370#eia%;y`ha$-}W8 zsCNW+3UW8P0QnkqKvfS^kCkmLZK$T#w3rTD*op|Y=0bwFOn&eYal=&8<$q=Uc0J1P z=O?|c7Wc5r)f{vM`L+gEV4&I6>}m?MHF}%+Gd+!m+ud$Yv%ASN%!jt`q5YLg?#acV6q&e9cOSzV~hLYzflYG*54yr(c@!SKXSYx4_}=FDWxqe|4Vb zbe-IKjpTLGc@6FtNf+pm4Z8n~ISz(ylDkSaLhk-k=&LeaciqucrXANE%@CixN^gb? zAUa*9+3$j*utI(KSUWQg8g<|iH0sJs%XMg7pgbGCMcHYOF!B%a^$k6W6OFxbccA)4 zDS9^$I2aH9Si+Z})%sKL8-1wPX=2(cSGzA>E-gko2?}6l8D^K^lmULrZK{g#e(ERM zO}FlxTIhMdRDy9)ueO-(2m9i~#G#?>&Z_4-^qW`vnO*3)sXz8phz~V5%}+YEEJkL@m49;+Ow6wNu z?GlR9q*%ymC7d@Y*(SP1iJ6aLO!DjvM+zmlAhy2{6C`R_Ig;11tQN9b%E-dx|0Ypm zkAi!h6e)OUsX+2OAY6{jL{xC!_-P{np^Y=B8^s z+5kmZZvow{`ND>oH->;OfuNgN(*l7Knl+%*kDppv0q2QsWJ_>Luh6<717OH^fa32wbQhhh^4dCZkz?)b z&svVKet1r&L)^oV?GA_6hc}l-V%sl}9UtIjo~CwnV8_bl_@Z??S<@QzPRPW9M>YsyOMia0$A)n2a($$D&M z_~7&BUyc?R?IW>6x*#eDAs-TJ&N1>g)aP8aU#d#IRllTi$++&sLOq`H^umk4SEA=T zqHk=Lo8x4;qVvCw|M>?aPcpI;IALFY#Mtv>YUI|){cj3hwH3T&3f`V7c!~UfA+h`& zUi3(Et$uK<^6whIAHPR^Qvcuaebmz!#tIS8~I1X>Ob zW>R7KQp8?+7@8edl+noQ*qE|BRgnfz9}22G+kZUS|E)+D(V)t`o`N?hc=!_E3?GTn xIvQ*?nsZ$BLu{4RjpnDr#r2xhTW7OTu+cnR?61d`+ZQ!^b3e}H)$E^Z`WHxx7FhrQ literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_notification/apple.mpy b/lib/adafruit_display_notification/apple.mpy new file mode 100755 index 0000000000000000000000000000000000000000..f3aa5ca040ab66a5a5391bea125df488e83a1f70 GIT binary patch literal 457 zcmY+A!A``8^F0FxflKuuhGL`d zV&+}UH6bIny%_R54wz>{b)om~J9H`fu~~3NgnFEYpzP~=`XOk9Yudicm-cKULNF7*HPLCzLvH2iCr&Lz(Sx z$euZz2hovX*o-@qp-%j<@dw0c|B*3SNK!)mm^&5(xgG6%Bfze$(lUqDmSIo&yG3h3U}(VR@eruc-4f) na{_8^cmSGmNrdU`$7_-ttBP7G=aS8OS)5f?W|jQgdrKl;3Vx7e literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_shapes/__init__.py b/lib/adafruit_display_shapes/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/lib/adafruit_display_shapes/arc.mpy b/lib/adafruit_display_shapes/arc.mpy new file mode 100755 index 0000000000000000000000000000000000000000..32d27a45f709d3c6ed2154f4e299c8fe1623d7af GIT binary patch literal 1613 zcmaix%TF6u6vpou?0^{$^Dx8kXmAV!KfngtW7?{%02`OkRA5LUjuZ`M?7&pUGnyHv z@rtokrCGF_u39PGbkj{1GeDZQ>Z0i*Y89#KW06Re(pCO}fW)@PgB_u&Q7v7cbHDlB z@0@#2%7unr!CuQ3^4HXgqzeT}Q%d=&pl#=sq881oVnnH;ZgNS{CApk0AzZI2Qh5t? z?Bw-rL^pX!M#QpQs&2_;^u`O!B1#h=uNOsKR^bdDi%d;M638{Hipc$@DpwRlLrvj5 zsQ~VTT+vHXxrjQhNhK()6?MI+qG2zzse%V|ga|>+7o>`Ya3NpbDiskeXvM9aVp-P^ zDYOjSg6-fHPMItDQo|1op0p#h+B@4k^jx3?sSHm8M^U>XA(tp?$fZeTR3(<19-JcG zD3%(pR)7X^MV1=%9XF7pif~ab$*P8G-E|D!tJS#sq+Pt(KKZ=sxBC}n*XD(_`P8MQ zl?zLV6@=?WRfEe40$fQ@i;4_cbb==pRaT0sUPWDXrq0)1ug^Q@w{>07UX4b#Bz?QG z84=~3Xlo$R+18j-k}ATum#g|V*ruC9U$uuGfs^Qi#JC^Z@EMH%om3`s(Vw}P87V9f z2I&Z418sv2){$FuuT$fHr&GB_?5dF+XlL8u-^n@+(gn=5ETN&X=m}6 z3u2H8f^x>r;;{~hVJZwtr=7)PZipVr14@^j#bY=`f+9fi*jYSAK*T8=lsan!zkYmZanzp0(fbz1+_gCG zR~FavrNy!LEUq_eaU85ZSpAlFAc=BW@l#)QW`H-u;qdh2lpY97CwMJ677C1=UwJDN z92>0!M_0q>zR7rN&y2YT#`^brCc_-T{@7%wXZ~8^m~LkVkA9%1O@^l1y)W%2v7-d` zV{3o*WdHk5mUrmjZpe|uauQnxnKXs8`#5t`!}`!sImKW zefM$d&Tg~BBZHnu{{eN_?2|v!zd*uepQIOQr`K0YVkXDI7to9~lj(yGBHiJ2k>@}m z{T4ZFkRwL&7Baa$(>nwN++i+bLBjb>rl;Zf5FGpA;1$|sksc7q(HeQ)zFy)c`1jA{ zP45^maP&op?cD&f;^j_vfHyw!!4r$M8-60dzifOw60%H=g0jK-@gZbpbA$kgc;gd* zX|d+($3p;rHUcbtiU{(?=Rhzv5d`9k2Em*n!n|>31_oghVIcMzg!dHT;f;IX(PI-H oAiix7J*NnQH|_($+5`c_g9gE#B5>Y#2t=<<;6VJ=AbMNGKV1adAOHXW literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_shapes/circle.mpy b/lib/adafruit_display_shapes/circle.mpy new file mode 100755 index 0000000000000000000000000000000000000000..1109f0bde97322c10ad90fc8f06608bc7382c88e GIT binary patch literal 585 zcmZ`!U2oE07=2pG_*f}#se46+5yzG#X10?sFLs53$+Ea;+0<~cbWpmrT4~e17<%_Y zrrD41#(w~c`g8mb!yn*VvR!)foadaJ=j1uf6?jnQo_G7*^I+%@qwj>i+l`FS?)p}! znNDE3mg+~4N3VS1c!RDBB8hxwZ~=w3HyrfamPz1$0csFig4iO~)F-=Y9mM7`6Vm67 z>w@GBiR%n35JM7pA7Zo!u>z>_0SKdA;71@t3?ewfhVjV?LiU7V05Xig@;$a`kN1!t zc)k^o2v#S`WH0%`Cd3c-HSNM7_OPd#-bd}WqW0{zYy1f7{5m2wi)`IAKVCLh*(F@I zb})BVp~}Xa=F83gfkYAih+9vTdCYeXv+v}>pH{PT$emIoFg;lou+Tv(Sg8WOb5aA8 zl7)H#r*xD1yji)Qx~kILkScb=ZoIF6yoNDK;k(B>prdq8N15IjWqZ?yz+q7?*0?%{ zC5AjhBumO_EwNM(+k{w~n#oJ_?duh7Y>4+t63V4BS-QVnt!{;9h4n3%t%={~iy!mF zWd3)2y&Q9t{)sZbQ1is)6ge3#;9UWP-^8=vmJ!bOh+?DT^+?P$EL2LgflU<(GB9} z3Yvk~^M^3>`FrFmb6tersC~zOO>|hh&RKp+|G@KSx&4M$n2yaqRg# zP&Bn$RrgynfK-WjqR=f0P0%FKH*~|Y(Tw>j+kSR+tXv&8F3&EWpCO_sZ&b^MZYc_s zrC6$IfK}apicQNfRm+*6_>7-DogFV94;{y}KdV-6G-o*ORr!XjUJF zbv|*1AljUd>_srL3Phs2!Cs#ECP#(*=24?{ns1%93WIi*;t&qwrBZlfSqhPm6eeM5 zi7a(aVqd58|1=w&6Xq3_HzFiLakRv2tVmH3?X=_ITP3R(Wa}gufUV9s*vu;&BZVzQ zwl8Z4$I}r$Q4f>2+-L3zxnlf&pC%@hf14j3etY<^PMu7v}uSX+WKnNEUdIk1Yg2%K!11y9ts-2Tejm%meb zf4IYy%2JX|VR}?5z}JMI+uKH7hC4u=pFENO*%O6dJTddDC#HV$L@awEfwcxp^n`Vw z!QCu=eC-EQahBUfB=g-u`%n9flfZom{_6MWUbKvjfb zg^T(zNpR!b6sKH1g|W-y`aL8PkFH(eF@T`(K`zMSQ*!_1YD_9qJLmFzf11lCq_RYB r3!W?T?)>RMB+K-BAcTNOmiOt*CxrhIY?5s!Kx} z!5?DVH(nHr8rueJ+mXkpP}b@?W)Wpx#1qgmL%v-DIT3SP6T1f4`pAyYIg5W;RxjZG z;L>#Iwe^K${r+NW29YZm4-@W-iqPv625dQukI&Jq%QMGcqxji&g*Pj+zOSc||lWN<21I)sGkpKVy literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_shapes/multisparkline.mpy b/lib/adafruit_display_shapes/multisparkline.mpy new file mode 100755 index 0000000000000000000000000000000000000000..e7e79a4cd241729e03ce95b4b80eac95d42b28cd GIT binary patch literal 2185 zcmZ`(U2ogg89t=^p~$jDkuNs|`X1`HUmASlpXbw3~u&;h&IOG$2>ivgm} zd!F}wp7WmP95T^^F06EK@Hu{`yep|(PO2y}U*#%!UJ)yy!mg|W!k6EbrJ@*As>orz zAyrgFyrrm8smRM{AYE0&ExwHGYE_YncM+aOWJg9Sp@H?1T)kT=qAUMrjiAyg80HdH zL6!t|cV|Z|BlnuQ_N~*k5s{W;aj7ijkavK))2^{|6_qcm$jXVu9I`6Al|0h7^`Gkf zwI!M>@Ozx3iiHZYb7uP$M0AK1G{7k(si;;EovRkPJw;N5Jb<0RUgZi>5qL22dljTp zWR<&9Qq__vR^`-^0ut-IEUKyqs!AvF6!>>VPA&6A(=)NCB0DRo1zrK^JMF-wNPD7e z`kRAI;(G|MB9|bGe3|>Swjfv9LG&dVPE9Bklq+a0G&@Hq<&q+n)hen{){69V5z$f+ zj=#k~wFR+{Jma2Fl1pW9p-PIy-GW$#UQlhWcC`mgLOoE3tfs$6zuY~VE?40ac+`@| zJPmW)*_CBa=fJuzoXM9I&rZ2i@Q4LPt)5m`E#cst`4_g~y;vB2_b$y0V_Ar?VS5pGLc!qexjvDdYN90 zuufwm=iFAtnn_0xVThHF4GTn>1Ml<+}5 zLObJ^HGei6nhYB>8ABv#PyA%YQT~u6~ zoA*yn`Da6+mVnl#VnA&%9h(n<;xH)=gK~VQ|Bi`vX8$&Gp!@xls0({e8yVNG&BNlr zI}vokX{Y1b;{5pc8`xidof(X4H|G7`@fn~0w1Gqb3BY-Hrte4f#m} zn8t2h#F+q?J`1LYQs%synThl;7oBfLdf~7mFj`>@8p63x?7#bDA6w|Z8jl3$uMN9L zC#SSu`26EH$8Y+)K~LI~mgVsDOke|R`Y;zml7~?Yf}y$xVI=FrsG%s>3W%%j!Cpnq z9|1gkl(^Z@PoR*|Pre0U<+k`@yT&1HeWh@1}ncLl9qpc(fCH z$X@z2ldHdond^>0JVtx97?vRu&>Xkw2;+bG>z_^dPx^~3HUxz6#zBW-0g8`I`apKD zA21&=VOA28e;}s*7`umM;8N@P4O{f;Rqg!%s)O7k(&j@Hk88j7_$Lj@M^Brb8I+4#J@>Fq(=n7`=TgE);S($thz~AkztL>7lM@r3^_5^S z5?uAq`qw5Fy=0nW@~PII zQ!(^~LAeh$!OmO9N6(Wt$;EbNFb3}putr=3x|na%ie;9hseNHIhpPJ#zpG>}S7B3Hy70?{dw?mnSc4f18-_ ztwo@;zWF(n);FIt51%L3$m?F*pn@-e(y<%Tmj z6JOT8%6fb&$+3lLA3L^iBe@byd+X*cBw53}(~sC>J%Bx0f85|!e+>P)nk~DZ9M+yC zS$1aQu|W+dZx~cWKRJYp{gh1_)Cl-<9_q|PCKGK=%Xn^eFpPikr9sa&$?HeQu-6AM zONRBczkUB8xoFTKAf(`9GHkyHo&6U+FRu0$g#0;MB>pj$g?&*Ga~6z$Y;Dbg!v6q6 CFM(k99k$XP@ptSlN%D3ST(U1o0aTk zc1kz24{7^9rYX)Bp&#qCuJmhLA2x}u58V@!_BfEX*Ik=b+FtHG_ji8hcg{WML`7~f{90y}mFOfZ3S2x(i>bK4h(3YmvdesWK*)lY#z|I`05&B^ET4{Zz&y7qa121D ztiYz10kOnND{(>Mc}@g)O^4+H8WZUF}^#;-B79&5hACZ!ZW zQw+PDk^rG6=Y{zDs|;|AaIhx{enmJ1%z~sT5Z73aqchAhY!bLY(DVmPMuav^!zv&y z@X+%051Z++@ySV$>&1i&FEAM?3oJQ1D)4Mt5<%{~X@yM#(@J~|n(_|nFQR1>8zB3l~c8ynALY;07imaR9_o%wM({lcZMULF?aG@n~WJSBUa}% zw%2zU2t$XFFm}`tb+HNag3a?g6^TtC@5wXmCc*^I2BHCLB#yZN(K8nSSd*>6ZVnoW zrkMot$w*gk(}r6{U6HKZ@ddGN-Y|b2PF)4IUc!qt5yut6nIrmU`@jrlS-OOwOF680 zNx`g3`J(_KFkAm6#cP-yLV^f!C}1Ft*!lxTXm{HB6)!S7R0r+Dwt+xBye&41y(M7M ztbC&3GpYEcym9&)1oQa^Eoie<9+^0{JaDnEH$aVh+*4>X9w;coh~Mz&F+Q{zM2?~O zP!(Ryco4pHXkXcTf(Id}d*JIS-r%s6mAw$6I&syGJM3}@i9yh@RoS~;+0$G`)!AB6 zoy6UHUBFNXBF~C5uYRFsi>lM2Iu5D!);p@*S*nEUWB4!$)K&~a*c(s`Ya>ytooo($ zjKpB;a*YYp<@5REiQ}L^pU3@%2R{@^uwNpPeXqgi2=^t{{eP_^ZHGdGZ=zOtQEqgN z_Z6ve)zP8K^IBae)F7hl%i+rl5Ai0);k;U&S7C|sg%ZrJ>|R;iiI6dvD+gZI;Ya*$ zoqT&_R2K4(X>U~vUPH0uHIzejka6=$1n&%;8kN_`PM4~cA{Q6leK}^z+q-tc;l&tr zMK0BVqX)p*LSBo%Jd^k;xz+kBayazP=~1h^PDVd%AxW}lNIPczE;34zQTI8Dj7EB0 z6FqK{1V)(Q;dVhAjW*?c@hC7nDR2HpF_r2IDq5{9Za=OndzJ9{g{NEP+ohnf_8WgJ z7XDhPR3Wpx37MPa#fOhJmAx`#KHIue`9CwK;Ag6peK_7Tn`L;t`0*|^QGp@b)y>66 zk2Qq}T|rL>DL>WtKi|v!^Sn~sp`wZh3r9ZkV0sR2!DE98TNSrWOB6o0<+kZ5?|=Kp z^ZW7+HC}OJyW98g?LI$fev8(8$}}PUt4=v-XJ}mG1wTctE9Z3Rtlxu-+SK| zwetaPa=_MT$i4>b>ptB@A|X>OJOxMG2?<570Rl#-yk;|7{PK6F^L9LMcg`nnPIu!L l|ERo8_FU*uXI@eB@`39zyc~AOflCvfRsREaAAmE7e*ybWAM5}C literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_shapes/rect.mpy b/lib/adafruit_display_shapes/rect.mpy new file mode 100755 index 0000000000000000000000000000000000000000..1e1edf963fa0454d55bb5d87614f2da916d79ecc GIT binary patch literal 993 zcmZXQ&rcIU6vt;vDQ&4`wp+GU6c!3KBDUH92NQp_RSd?!iu@>vF5B(cow)6;yHm9X zlPMZQJoyKB@-LtY{=mOLJ$f+VfG4kB_y?R_D#m!2dEfWuz0Z5|3IQ-Q>bs~`)O&UV z6QzP3%TSw&qpKEjvNqC4#%h8-IA;-T)>Q*UNYldgDu{Jbu?Zr%%(=6fNf5ln(gD1U z4K!op3JBiAh5@2xgBZAuK*S-odEd2&5M+Z?B#%i=wLnxUcf`DExNiU|R!507^*&Ne zOMTElK=K@7t98dxZB!>9Y2nAnaL27MqVF;AH9`0ht`HqWbcCxq0XIcOd5CO>jjt$- ztk}phnaZA-f|hMs$Ro3#D1^4wVP|q91mPM^ivNb~^`P zfcFbMlU-s!*0|?IX)LgjqJ0fItgpQYxo4vX@B`v;7!Xe^OaK`M%Q6g=TQFSS90r^i z;RkcvBqs*>pwOH1d1^4%#cYTVv54POgSl>IMV1?2HnFMoyo9e`ZP3dXBSTWWUrYo; zVR~VFW@7eaI-Ndsi5(@KzL7q)MRyBVx9M(iCN`X6eNfCFKeDyGKHb$$Mw#wgpXS<0 z_+H-oR{TZZw*}Z*+M;>9{P_dTuP%RSwT0-%opIliC$?MrJNvHlb7l2=VYpN}5V2Be z+pYQfw`S*4r)JA7@tpr^-nmWXcdRE}Vpp7}(_AS(M-KxrHxL^c1MU6@n*$2$1;*dN z{af40ydfLP(-j tm(V&Ogczar521BHXnDiAgo6O@1{fg}7A5*{ZBvK}qU$9j`o!}R+Hci(DhmJr literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_shapes/roundrect.mpy b/lib/adafruit_display_shapes/roundrect.mpy new file mode 100755 index 0000000000000000000000000000000000000000..f398c60ce17a29200263281f627c1b9b8c14fa81 GIT binary patch literal 1799 zcmZuwO>7%Q6dpT2wH-GZ|71ykP3OR-6vIv-EMG|fx02kvz zDkUQV&9|ZfR*GV>%c^VssuZGSzlV^J|)Q{-~JBIX>K6cI&wH*6B9EzROy^AA* zom406qF!_W>i88ufZdi(+o3=Q)g57Vr2u`hyL1G@9De;HJei*V%&0!4L%>2)Ctx=< zeAx>k(2$5gW1;{}iRBYONA-~;hCK-k&06wvcsOy1fL_s2{T7E`AJ9<-i^10G@6aNL zzmu#+i;-lyw8-J_ChH)<9wO_|GHdt}{Pk4{PruXWbR9W5IOH}MO?Yz5n4xZUSR&v?#^xJTb4Pn@LASMZb2=_-B_p0Royx_}PVD#d?(4b9Z5WYLnu3$k|F z;nI|@JYXr?EOslN(#1&1R;eycb(9C}6&!pox>2p|)PfhH_lsqlef{p3ey*^2?fT=8 zFBWSC$6~Rvy}wqgL8=H1v#_U9tUcQ)>_Bt18BCQrVyls-zl0;JM5Z{WYQ0b-TEUB& ztQul%XH7-jDy)&0!dykw<)RPn;NbP>!vayiS69{5pjsyaZ7U~QR;;m@=9Y^-+GEul zyR3>z(q6O%_On_Ikb}JQ{|#72T%g?FN5tU(u?LUbhDTSXKGnq{?AIe}w@RhyRKII< z%uV%}O@|FQ=Nxtp2OTb__H#SEQ{HPH|0xm#ymOw3S6!aK8!nH(u(GpJxc|w@vj_O$ z%A?>HOY8Wz@Y{{TACK-8Hy^Cu+uW!ZHXq(CZr)$NyScGe+6w=R?}UHE<;He(yWH3b zMxsAgmTmU$Zr8VK+wFmjkt3DhU5-2rN3gmvNB->A-OJrhXt!OfV07WKTA|RaU?de*4^${LD-@cahl$fk{^As7BhdmCc^0|Nt^ga7~l literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_shapes/sparkline.mpy b/lib/adafruit_display_shapes/sparkline.mpy new file mode 100755 index 0000000000000000000000000000000000000000..c499c5d28386cf2e845cb77b72a11b4849106fac GIT binary patch literal 598 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_text/bitmap_label.mpy b/lib/adafruit_display_text/bitmap_label.mpy new file mode 100755 index 0000000000000000000000000000000000000000..ac65d5a3af49c3c2bf4e00d2c46987f29c6ec7d1 GIT binary patch literal 7915 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_text/label.mpy b/lib/adafruit_display_text/label.mpy new file mode 100755 index 0000000000000000000000000000000000000000..72ec9c4fc521cef317bc4e98114d4561e1d63de3 GIT binary patch literal 3568 zcmZ`)T~Hg>6~2-XKZ=T%U3slyny5mOh4{51%dU-WvaE%`*dPo>IB}Piv>-JC$*!jFwJ!{ni1I!zy1_h<6b5t%&q+$({BX$N%g z-E;5x&Uena=iKf}^vE{3FdTQY-A89Z$rZEj@b zV)B%jM74urT#{u8QNyvg)RT%u5M9=cB@o?@^*AvtA=m!|M$|x3jwPnWI5G^+B;yh? z%9&(rdJ>s^iD`K-m5>wRL>w6>;0pi^1Q0bkgpe5ia59ycnT`m_G6jzyMj}$==#~tm zCNZgcAtix3VM&n1P#PJCTgWJU6pP4F_{8|gGAYSI2x9^RSj?hYAu7ctqcWlntyreS z4*?}5PN$P%N&+<&u+yN4BZXRoa7q$o=_m_~RDT@UdURhVCTayS9maT+5RpnNi$DSo zxkyQ294A!Cj}D>Ak-;I<0E{ApXo{%UAAZNB2^s9gW7CoV9K$4>hr4njiQYc^3MFJY zF@-9JhdGdjAX9=Ek4;WbVIt;aY*va3>8KcyQb;?Cv>D_Qu&YO+59vvykXeW)!eU&& zDM_O21C~T7krW@yNa&cerSrMEs_g0P6ehn?`9ODP4TLcZ|Lv4cU~CgKV7OtnZG> zax#6ny?rt!M`uE9;lxz?L3y{ochEq(W2rDSlEI7|1qb+YI~j%|X#+iE&{ku{d+I-GL74&QCP4qtP<4&Ta8Y%TSgaf@QIMS}g-p^-49Wdn_f9a1PARYB=py0euH zI#$4`@?QT)z(#cbZl)Pta%i#Zms>aNpU@{OAvnu17TyOC(}Jb;Ilk zRmPm*&-S@1*?xBwd)r;j4!CRBK{af69Q{V=di&I9 za7-C?@&mojxTDuWS7be!yqOxzo9pO%c9cJTYW~iGaxteF%bVyt!+168^!tnWj498Y zHnCom9m$)|D0#-L+=apPQ^l(pTMT^n4SzFls;57IvmgkBKObD6a@w=O`@d8s#w`xJ z!(ol}wzSzTjU6_>voueZCduh=+N?Zp@98<$nZ}~Z*ot4lu)DFc zTBL=1c3)*oKd6lT2ag6e9q>C>T<89!U~T6f|Ddc{+Bm6s=8a|vdYwyvLT&_`!RCP8 zF;hnr4iSOn9`6IYFSxs9t9`)ah4M_<;&{ALnI^txW%tScCI{1e5f=2gvgpyS!?fhl z0xb(=-Q#I^I4kD2RbHU7;MT1zT@wMS}ETu zQ^(&@nKn~9&i(!V%c+3``L9%i`LOL4&jthhV zr+ZzY--m-9jq)x3@K`WGARS8w2*9^C(*;E}otJq`McF>=i%q`I~_KsgLiNaN1N5!+Q|7@+wJb#PLJKr zH~Bm9*xQ6hd!Of$V*r*n?5=i?#}$C3-DP)mc$yvk9ai|TPjxwMHm8km_BZix^UwL6 zFgl#Ro>nXTan?KjHfO7|8UAkZPPh~ht~#F2u5+BSz6hyr;(dy0_Hup_OjzM`U)tmQ zl+lgR&8@&TcMnT`K_uH)vcdV4(aq8A4P`4Y-26@Dizn2(d;HJ>EvU?yQZ2lGt~}#x zDwOzTI{XCJ@XNJsj-wkj9on5&1dqCeOY4tWdVFPJjkyAa##}AJaILt;TrYZb+w&Np02hK+Hn?6oQUJL}y8%b87k9V} zJzk)td5;FGl@|x98$@-LsBVMm_$pD|#^_KLf6kQ);h)O?v4Oew5$;!ZJz6L->{(}# z48R@OZIu|8ECTM;1J-cnO7Ru8l>3o{Vu$-4dJ(D1{}6k9D?sc9Fxn+C0y`_919rB+ zM^Nl6M{olO0NS;EIJysutNR`uP{D!f#DVH8;xIy>4i90oZ-TqS6-oDkuJUh%c(i?|r_fZEvadQdB+oc5w=MT;O@=!J*}pOD-rJm+tE~@)=03G`s7&uO)pU{mK!qpVt052aylUXuA-`-sjX!zy#dWxc zZwjW$NKM>ALtFxv2u`jM?p~j!Kn$*|yjGASc!vteI7X>b@%0!V1#b`YOZ;3+!X(_p az3X6daMnwrM3rrQ?sz$U3O=QxwZasZG)oX zalZHQ-rOhbY#7bC;42p-6+(Kecv}#@(Y3FfQA+C9Lh%w+Zd-PoHr(k?FH4rA_@sZ%ZldKV$p(w+1D{52EdT%j literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_text/text_box.mpy b/lib/adafruit_display_text/text_box.mpy new file mode 100755 index 0000000000000000000000000000000000000000..b63f2979a9f99bd4f83c35baba35c3252b3bcc24 GIT binary patch literal 3094 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 N;MMOg_;e(i{1=50)hYl0 literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_flipclock/__init__.mpy b/lib/adafruit_displayio_flipclock/__init__.mpy new file mode 100755 index 0000000000000000000000000000000000000000..9e4534a20f283b044cb69e8763a21074252c0fb1 GIT binary patch literal 175 zcmZ=}V~}TM3`k5#Oe-qQEQwFaEH21Ntjx@hPs_KW=;Fo?y+m!%dJXXfX{$1@1T#}}m*pz+?bB CoH;K5 literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_flipclock/flip_clock.mpy b/lib/adafruit_displayio_flipclock/flip_clock.mpy new file mode 100755 index 0000000000000000000000000000000000000000..018ae55eec5745b7df16218232c31d7fb1137a59 GIT binary patch literal 1858 zcmbVKO;g)e6n!#a3^qZQgb-kez_NphV-v@?ZfV-4c2bfd!D&7i79B;AANHHbmPdXj zaWk39E|V}x7x@cabnn;Cq~Be3+f_T0nf`>%WSDlDJ_$piVHGWO&pq$nbMCuR&I^v7 z>AR{GwRNk3uv$d*nxQq3sjeHSrW>YyE9oHBg^5}d46`dWjLfQLfB2$ zYJl7827y&nEI|wkhbU8hvw;)0-HLiQf+GdZfEYs%$RSHNAYeD3j!g@hfICMg$fFX% z;L;&_dy^*INsDfw+mmzV2Z6eyYk}|}wZvr*C__{#W1!TrhLNt;YZk(=UWRnu^vj%D z>kc-H&6=uJQRP5~yvOd=C2pD+o0XSKqx%nbs|Ab{_i`S_P`Q*{EV5 zxJ(h!1%l8`%ee%!R0D2614u>9y7gaHfko7)bk9P?W>u@uo33j`=X)J-SESAZ&mGY0 zCMS2<)Gjy$q#C*d4Ygj@igbMei*`5az|#bZx}h1Us9~s9;cdDgWC8E|-Fu)F6V{Pc z$2*ko?mf!2&x&=Zo7LhDc~Q)*EU#QruN2PY&VuBLg?5asS!NAdxC#7iUery)tkN4B zrUlvy?4Cg@*G{%p&DLpO?|foD<-D^CzMlC+#(8D?lmZB39b58k zgv+u4t0fvz;6Xe-&fKs^XO^$!;_+oeUmCYr&m1$+6Y_|jHJk0FxG&Tz_O4wRTn*0u zna{0VU_P)}FXj6~UeQZyd~S_T^ie!O@nC2`9H7`waUkRu{cE3yC$FXeI~4S$d&Hs3 zI&(jsjSX$ZZMo$y&&)jfaBFm{|KadfKM1D8Q|yqKei#Nb4_>_Zs1Rnto^a1x|CP=( zV8r3zLW)T)X}}4fnPsu_5J1WWvj8-lC11|;7oYui7Z7T=g*-7>C%A|T|AgxLdW2V*saXQEcZqPkda}Q zeX_aDoqWy)pSHI%n_%s8B5_|3iT{#F!dFBZ`I<=LH$)nJLL})ak;c9y()f2on)s1O zp`VB}sjx(v;{1f?2+tE(os#>{qjY&=?d^~Mj?xvnpuHUxxB)h*1lePo?6ktMvkITy0@0EGvx38l zbcxCcHE^Ox<7Iu*Hzvdu?cZ(xV(I)6_hyGXo%ZD4=ich1nbxy>!3FJS`S-ZD!}NcI zI|qN{m)JSscqhaB+|k=0HW<&^f8AhD2*y{1ANTFKDZ6fweQwF@;^UzM TZnW$WH^p(Ijfc2J9JhY~^W_&j literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_flipclock/flip_digit.mpy b/lib/adafruit_displayio_flipclock/flip_digit.mpy new file mode 100755 index 0000000000000000000000000000000000000000..6ec5867903bd9b990db337cf55a32211f06e6545 GIT binary patch literal 2042 zcmZ`(Yj4wL6n>pv+$JqJb})v9)rr%Tlr)5pUg*X~b15yNYtx37uuX0pJFRJMN*o~C zCOK(oOM#6|n)te(5SKAvW1GYu*vCz16QA}6CO%I)cG9j~=Gd=~&w0-CKIgng3Adx( z^LRWdCey{Ttni{-DrAxsInSpvav_z;r&dqu76g`M#aF1HgTzchk@LA^26ZWwf}C4M zT_IV?CJTt%%SIiFoRv`5qAV^;3YvWjKkSk(E57RnqSSn&1GCADq$m<1;&MhhUz9~e zPQd;VeS6eZ(ql!$nITPCL0v17yu6|yyI9F3vvP`0Cq-Ql(`1=Qih%Z|Br#cBF6OUE ze4#-PI0!H$C8;#B;L8o5RjJ6o;&cjmMagIRWKPcN?0~Z?`NID115Hk3GeDvQl_9o~ zP)ueeK9w)$6vPzd8&ZZZtr#RW1@%YU2|BzHY=2AwI3TXP|;1E$L<_l6$sUS;@ay2_tDimc!Dy>K` ziorL1yF-DF?=^6Lh9S~8&fSCd?eFS-=&t%#&~~Ay4=GGmM!F_t;4m9=*8Iv!qFl~4 zW3?eNCtYtgxf-sX&DYMFEjZ@Ku~Rq}z_HUf7R0e392>^55gZ#e?lT>&exE;}ucJd9 zEq>pyzKnLXobvhG2Bvaw!m`K$F>9Rl82jnx`r~7#%O!;sBv#HTtbgzf+HiSkY)L)r zym*P5@D?YJs)T6(>uIr@Xj4KZTET9!x6-YN3+6@ZsTYxO;sW-G8tZAN+f@RGXonrA zaX@ww<^dC6JLyilnKmcl0Yq4=c(8@G#8TMy$NqWCR=?^Ho!ssv?K7*Eu+w>4*uuA? z>)ps2pidJPI>;elx*Sw|*>s8@q zO}MotY_AKqZwg;-2=_LHueOA50O8x_usP1ewQ#Ki?eld9!su@6Pyh>Jw8!e9x&kKM z3bfGPKr201Pqp1&+WNNI_F4Dv$mp4|ci%hPV?V+W?|*PkyXzliJJSb(DCjF+|J_w>9P_pGJOFRl*7_ zB<)r=m2goHe&O1JEgD0C`E$dxxu{1!HOxaU>S5DMYZOHtb`u(P2wql=qTxk`rXIM7 zM{eswH~FK+Fh6L_5z@Rv9CZ=I!76c}O7uJ?>`#K*n8qC27kFpwzt|m!^^)fAAc=e< zi6zb7L%{k*z@gck8g*bxeP+8GojUTePO<93 zEUb(R;wQ9Ab?TV9P^XBb60`qv>(r z@aY`A>HAoN4DGib&7$0RsXtt<+rdSk!WNMLYDunS)lE$S^omyymrk1 literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/__init__.py b/lib/adafruit_displayio_layout/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/lib/adafruit_displayio_layout/layouts/__init__.mpy b/lib/adafruit_displayio_layout/layouts/__init__.mpy new file mode 100755 index 0000000000000000000000000000000000000000..148a93f55c4e36f5fa4e6a6853c24dbdf570dc9a GIT binary patch literal 951 zcmZXRVQIdD>FUBq=nt>;yD}9O`&EFlD z?1jf3&L8fDa7Wm1xX6 z>!S1|59cUdVQWW=LaeY#BYzLAR2cIb0mL8{B@l;rB%mZpJx%}mS!?7AD6_bq7n1q= X*R#&|zZJ$Wyv`55*k$L1)cN2aY!&x4 literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/layouts/grid_layout.mpy b/lib/adafruit_displayio_layout/layouts/grid_layout.mpy new file mode 100755 index 0000000000000000000000000000000000000000..d72bca13a334407af722f1943aca5f46b2d34f07 GIT binary patch literal 3338 zcma)7U2qfE6}~H5wk&M8+LbqoE#t+KR1c;_x%hFKtpBN~99!^RuGNr^G@olb91F9!6#5mXMnKkB7Hrfk&*jAI46t`eDNM4%FA(!bgGR>i8{*su2L_7JkAkL&^MCzOh z;tvJnND7$@pG%}t+JSCfHW@Y3AxfjKhkOxRsDAd?V zDI?_(o8AWC^U|dPVlQrY0T$6;NBHf)#U~u;f8L+F4K*>9}oL9NVle!xB=Uv><9v2kktb$Oy6wwaST?g$!Rv zCqOx(p=SK%`D%BYUejt2JtN4~T{FxTXQ%s;(uKfgy9W+!_I*^$C!zn3&&g@v z$r*3K;R)X8#6E~cR+FW!zpq~(%q`pNWNzM8esfUkVrH|9%&R|U!~z4a6C<5xrlr|z zs=%C=@{E>*(H<}$ka@orWE{w(B%#1$C7IDgLLK!Pnwd#xE-4Rv4sr`x+|}kDCo#n+ zt&z@S(P4Jnof>5oY{GT89-DE4-`w8lG|?t!9bM8`^bYHRBGLYaT(i|!dFndTyo&0 zlEb!Ka*)?c4(dk9VZT{&wC+VE2YtKbcure5Zj~I*uMX9dheBYrt!=K_S5AC6WL=&7 z^3$REH5f|{=L+{{1sq&bi)$-Ub~UE1E0LpTJ}FUc_Kx?$L|pyH*>j&o`{Hp3F>vjG zQ!2OzC92)t@qR7trt*+Gx)L2;jYiivP6c+8$;&qD?m;ET6z!d16rW5!IQ|RfSM{BP zitO$2`PpIbh0)>~j$_x}zu z_%AVI?&FNlorT}A$~?g^W9Oxj*(vwsDdy$;!I$NOO5@(6o~|@A#dxqBi)V;_+gyZdI5A|EaNCrr#2sn$muA8WpqB1Jt~uKMni5iK|NgiPE~ZDseYu7yqU z$V;PmRkI!Jnm&1<<;iHJ<&7X$UC0#umqK#ajdMZ-9J5YxW$XhYtB*p2Zgj;c)^LGm zLr;cD?uNmmHb#xD)x>zU7&TUnu|@7HnoCd6{r?YrdUC%>kM|et9ohnlT%?@b?bpdB z``-C5@rNSy{4M3QHmav9rRfHh*XA`eWm{XNZ(VCCl0(zf|=IKhV@;wiQC%FogS+*p{G5 zHbW@HZS7Q~8p56wV+eUtOoccEJ&`(VBdxgS7G_uV&R@q~729rO{9fp%h$UgKb^~y> z_c8vBwntUsRP0@=gjVeVrsyxKqiHWBU} z916I6yBD*{PLJ2$o-Dh6w(M&~LhPcL@h#rH9;M@ReiGgGtSy#7au+%y<7Xj13D; z0N?s&k;u6?_lo9IV~EE4vVF!8k$?ZBR)U(|(>yS^ z_&{ldyH@`XcnlY){x|U0Z%UqRva*AV52s*LTYCo={|;*^`G)U+Gc1gVy-`+UkMAul H!}0$GTWnj8 literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/layouts/linear_layout.mpy b/lib/adafruit_displayio_layout/layouts/linear_layout.mpy new file mode 100755 index 0000000000000000000000000000000000000000..16d8cde05d54a92215e257feaa5006d0c0520a33 GIT binary patch literal 1134 zcmZ{hO;giQ6ozloFKkOmlM=3c8QP*y1r#f5+rmhZu>^})XPg+)D~(f=+NMHvoJp(B zuyCO}SNao70{#HM#+@5i&iL^k99OQqNefy>7svK*vAUAOvb)c! zRT(LosL84V1_en~G%SU(T+={Qs8rGIgC0_ffW<@h8=w*Dd=>}^ofHvGE+e6x42p_W zQmaBml@$zYD^$d~COhNchFVwb%)*Ac4g57pEF&;8btceaT4&TyCkvpFQoo6+qJ}{8 zbgH@Kk#fH?b2sZXjoUyRlC=`5a(`}W`d^#i)W1ysS&S#x72gx=3fpo+KXFa(FY6SU zAckDSBuf_Zvw(7k$)t;Q^Ad4C0tehX!`IHnGLJ?d1VQ*PJ4m_Np(Yz>vB7XaPmmXl zF+i}MS%RfzNtQMw*Te0f4~T?kc*N`L_3Ov=p7nS-N{m+EO! zhnjOcpkSHMyK6$SOpoZf`I$uGXq0Q%&z+-_tK3#`k(c}YSz|A9P7zIshZtr(FcGtZg^(`zt+PxGI3gXy!NZ;`SqbLhLl z_`l35-59zwY z_Ts5j1W#SH7_Y_j*o4*(dq_Ip?pRC&>x1s|rfxC){8zj%T$^j@6#g$3?BCDauru2o z*8Uz6lUKUKr}K^;xW8sG&>=h1-eWA=!Lkna9rnH4Cs6|jBqw7#VVl(ICcU`FOTPd( Cb7YAC literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/layouts/page_layout.mpy b/lib/adafruit_displayio_layout/layouts/page_layout.mpy new file mode 100755 index 0000000000000000000000000000000000000000..49ba6e3ca414601e987c334f53b590d642cee1d4 GIT binary patch literal 1679 zcma))OK;;;6vwaAq-oQ%wH?=WAIzA%nm#6J(@u~E2{DOj`h=vNFp7Y2Qs+(*Xl-LV z(?$s4l)$uKW0ovX9@Q*hh1vxY3l_5gR0+NV^98uRPKM3`iA8*m&-tI<`R5*|2EpxR zccEA+KGtegLo8Kw^{`m4Dk6F+H6vypdQ2^rVJ{a|>tNjTpr#%|;5F)MRW1YiRU`1M zMpvS7z+_Oz4u$|vT2pE&@aoVopauet6X2)=KW0jbY(Uu%539NXf}&K@M7^RMBdA!F zOYj7+#ZpP^sX%?KAJMp5E*>Ehm1?O3Wx$G31xlZZMXjuZ#ynYuhG?k(Z4vD-*oWhG zdjfMK_PMGdM7ieh)}lB%Yt zP&4Xa`!tkmM^Gyo$g~WPdsjeOA@(wKs3DF4NmDB!K_^M_C_8x@oR zu9*z-z#k(&JT`(HgMx#x`%AbLZ1%L!a{Y?`#ZEJo_d&$ogA6AlTvT0&s>r9Q&&S?1UXSS(XaKU26n8Nlp5O;)6H}#NFteqNY%02uFeVFgmCAERu(v z!RH7&+mgIrlRrDz;b6!!Vy>FJOo-9!`QJ8jO>ZF3`wpv`&BHaD7; znw1|3ek?RcnQxo!xwJnB7lnD+$+#2XvdfIO6GVQ=(Iv@)4oMwc(UF$VyGEG53&LKP zqtOd9et{${X1t4ztaJ`OiuytnXJ$?JLV773Ui5z+_Rj?(LZF@fQ`qUCN1C1w5NiZP z@e5%WrC;Ebqn~=z>5aJ-_UVPd0K@bX2}^?;%9%?vT-+wFx~Z-91xe-p5R!YB$!IsV zgL<3{gPbFAR{Dnj#U%U_mM6s=-UzRU=OThX*kXL`PQsDLCe{(FlanxcA9F`9yNKCF z(5{qRK|~jFA*4FV`!@F}cWn}3)}lT&hc=?&NN_V94h1*+TzV04)(CNXW7%AhsB1Gfw-Zp*{GI$iuS>uu)wo{vQEPy`Ld~yrdOxs3t8Bt~t<=4Wy^ETzBd3~e* TCGLN8qkj+g_eM2vJuCeK4uAmK literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/layouts/tab_layout.mpy b/lib/adafruit_displayio_layout/layouts/tab_layout.mpy new file mode 100755 index 0000000000000000000000000000000000000000..6ecca0fc1587b010826c4b0c1c85581c498c3c24 GIT binary patch literal 3151 zcma)6TWs6b89tIPQ540dNSR|2EoNlNu@srICC6PZZDU#S-AR<#v6L>QDT=n3$|6Tn ziM^mJ{>-T@>KWDNV^_LI6$`!dar7CJ{QB>tJw{|>z#jRuEm^FrqwaKO3XQbV7DR1>li4+?qA`Wy8tT3>`M=CEzlH)6 zm930}1fAzag$HQzmR6D~tdpN<;Y4J*DwZ{|G6lJj&#E9wDBP+nZgA^DS>lQa--`)o zg0dk3dT{kFa0Q`^GOdV)8>t7qMpp`wJQq~dF0+i?k$8{r^ZWFV8&x}K(ZXKiMIu|upy)4&5g{Jtu*K;KyI^# z_O?wAdV_ln+E=)WDszfpF10PJQ%r^`qUsW|} z!=4iqY#CJ^06NXA+s$K^sVMRqBHPK@3a~|myTgK2MIqb5!#n^?wk)a|szrOCZ&oVY zLZl@$yCOACSr;@`6~7OId`B#5CFHU2BHT_=;Wj|;VD~y;D6YbnB!!hF5l9GFXU;l- zq%Aj?2sv&-5gb*~x-lrMmZUpyMW8wyvsft#o5<&k8KPuyQz)})i7UdPhS{oIw8m|Z zMMQGNBCu#Tg>WmCod*TlvW50lu)z=QQ?=qN)|pt5)_6!VIw~u|ZBeSKj&iWXRf^D< zCRONx~5^W{fMhWVgE@_&qo=qgyMXgjVFub&p zXkPQgMDuB#bl$Nm&O4TIp10Y{taGm!h(%qYMYsU8%&988HG9XtkDRU(drs}$wiDPz z?D;rtS#LmBsx9SzVUOOhsuu*Pt26jqZQ$MRZ$UCdLKn}W4P!Sm=rTITo5#lNm{Vr6aZ3ZPRHC>2i6(uIMx+(lkQ*#*%9m{JM%i$9djK!5bP$qLH2-rFz6vY zAbUYR6!el_kbNK@4*E!6e$Kn%zw%{fGC$|Ksb`P%kUg;WlD)8EB&K72@Wg|D(hpGt z$ble15+L`1Oa}YNzC89VGCP3Ct4m3QQT|@y$XEwSWqH@zzSRlp-iUs*xO!I~-(hwR z?RbCWyXU!e0siTGo_pSV2a*38xr9;VvaV-qevCMp&4zaVdjCl1bpr1RgdUB%M%*SfU{Yag`+>8KnA9N7J;4i5 zW8Ngffs;?hUHNpu(($0X`h=bL{l+$YY#EYi3qYq;hjGBR@ zNhF|8pJ3u zHs)gI{|-ca@~LSMBY*sD=Jz#R80Ze1HphY0yaVAWPGI8(5y4(Ch(YW-1`#997{rO^ z27o{F=JV%o#@u6Xq0d@+^Xod*e?O3{10>vU5X0EnUF_U4cHSW3*oy|ijJ@Uh<-mal z)Jt`uzfPQ~6EAeS?1{|e52naO=V z+k*=aEsX2{OyI+{?B_$>H{o&_M7U064C2%S>im6Z%Diq6i9qr`Bul^hgDn5UnNjj$ zPJc8UjmIy=7<1|AFZ7j9n$oXf{*t@##pF-l$iwN>N-2CQw_ehpuCB(QY+%aV9e3xAKx!O;d7FN!yYT7Uxf%Ue zx+h^dOk?LvY-ZOQTqAJN_L2|!(mDOvDs3~v*K#q~i~65W8bsRsLuSr^pc!*~+sX*O zvpM~5j_)jAqhj9K+%5edme098pShg=PseADuWkO!h0W&{^nb0cLKmZfd2GSlbgo{o9TvagurqR&yp((Gox{3kAjKrijHa8l<&{^SO?4YY^jSK6BcI_+eYrI+ X&p*Wl>@v)pz6^B0k?tB)I?MkD)`9to literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/widgets/__init__.mpy b/lib/adafruit_displayio_layout/widgets/__init__.mpy new file mode 100755 index 0000000000000000000000000000000000000000..0b4cd56667eb75e93ed8d75c096894b09ad00ffc GIT binary patch literal 60 zcmZ=}V~}TJh)PUJOe-qQEQwFaEH21Ntjx@h2a@@vCHm!=De0*t#rpB_nR!6@c)fy3 M27V0&CdR;I0A-F7$p8QV literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/widgets/cartesian.mpy b/lib/adafruit_displayio_layout/widgets/cartesian.mpy new file mode 100755 index 0000000000000000000000000000000000000000..a78a8f19c408db91cf7c091b14d3a3a0c68dbe33 GIT binary patch literal 4680 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 D*>jG| literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/widgets/easing.mpy b/lib/adafruit_displayio_layout/widgets/easing.mpy new file mode 100755 index 0000000000000000000000000000000000000000..c28043ca492eac23d10d59efae61d463a228676e GIT binary patch literal 2167 zcmZuwO>7%Q6ka>Fv)MR~?W9vXNfUe5*_sK&@ies>q)L>AHl;p3BiWU5KuElqwH>=cD~;a!-uu4yL{dF8JM8$om1A_ zsmFqgr>>X101}O%DvQHDW3aMA2@C=bG<#YDIH!J(a|(EM5DZ`Lj}ih$2-I~UF+jQQ z!1FjET5CebdV{tru%O-^#OA|BOGu5tjGY-lJcUg8NxfDrL$jqypKrF+w^2sNZ-c%4 zlq;p?@T|i=pLH1M&AL;f_xt4%1BZ_|@VwNyom#s}2a8!4a#?z6$nR+vi;v2UCY(sI zC`60JM!8-CD^!P71+VY5TJ`4px!gUywb$NRrL_mS{$b{>^e^-(Td3aJ-f!)J%BFX( zH$E-i;`h1=TtOULTfNAhHE}EtPayBT1!k`^IFRSTi(m#X6j(HrzqH2O0D<>KMm+HQ zw3KoET4p!Z5#f{I6FZaejlL}AMWs#{K4!C*WsY~IjN9{mJ)5KWK}lE^rkBq9ov2{c6{6d{vnnuJl5OraQwpjk4F&X6cNOJXQV;%JV{ zpm{Qj&XF@{ks!20&Y~1apfpJ$nam-D%%cohK+EJDQpqAZf156CO-KQ3+|g`$HzozK z@r7pFF0Ch}5H={-mg62#OH4+_vGG7tRa^1B-n?enE@XYn-j3}an-1NJNg_5LGd4ub zR5Cn)jqkLKZ91MHLJvk=$ zK{_19#!th7w!=lYlhG+`{GzEi!<+l~xhD!NR{V*l$yH4;CPlFEYhRWNC&Sa&_-#nI z*TPdV8I5A&cTIiQ>-JW+FATiVj(ZeyJ1xbqaiqolvvDXM_s`6@)=9w!!<%bqX%-uA zyx1T@&8@t21{;5Biq8ZZvU#ZBb71IfUOJ17zcdy|n6O$0aB3#fQW6_~Go^%OJGNW! z(Wl#2B6HaIM^i8GE!^?s5@rWzoaa)-=P}%;&Jpx)IzTj!q0U}DGLO4KZCSRBH=7^Y z6!I3V1DL=q_<8so?oP9?$-}Il1?v$M_B*sA=HrXFJFj6`U9%OxGWMST4<^F<*ycqS zte3WX;1v9?PSSL4gg{ zYl!JRySoujb&0Naz{=S3~ z?Ed+&j;2FJUZ4Fx{$I~kd~jc4T3W_k3df>C>2)}i=Ry*xxciNkUCC}_FWVg@aPoTd zrflr9Lso(()PByP&t>br5;|e1Y*1w!EawMBJUOQJ_u#$W{7U{gpiFoP*2{(>u?*Sx z_cB<=R4za+CwF|xBoA3(FyM#XPDjq;?qf||;bY!}pJCay+;tznMiopGTIB=$2MlB@ A@&Et; literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/widgets/flip_input.mpy b/lib/adafruit_displayio_layout/widgets/flip_input.mpy new file mode 100755 index 0000000000000000000000000000000000000000..42189062a25845d07a4f8196f04f1e54c7466071 GIT binary patch literal 4730 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 Ef1Gq;N&o-= literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/widgets/icon_animated.mpy b/lib/adafruit_displayio_layout/widgets/icon_animated.mpy new file mode 100755 index 0000000000000000000000000000000000000000..f7964a318e4a289f401341ab1a88709f87381be8 GIT binary patch literal 3066 zcmbVN-BTOa6~C)5gp6TXiLC+(*+?LejD)~~xY$mxP|JsnE!o&uX~=rny`Zh7-L-aQ zqjWl6DQ+iiW;*U`XZk+~46)tzrLEf}ZC^5di2Ksav`>9CjPus%*$)uvB~iNft?fddLG0{B&v2zvW} z2QsNzQIY3@R72zyMH6L-DF4#JvfGC0Je2G(4)NT7Bs?2S%Dh~poeoH%cy}Gf1D=4H`svXWFeORk~nd6Jm6;@5yo*3n*laEidFX%j07WzUZwWSJh;;f;TEyEh47O-Nvj| z;UrbzDp=BxcS9_dkaxW#YRCubK()JySlldXD5!{AxWuYOP5_XOE##=do+t=dLN%%^ zOR^?QB9F)l7zPML3s}`yiyU&vTkzCSzbaQNJU&`hU>O?CXG!6+*&HJ5=H*fe^BNj5 zX+fQjQLEqSHX6q$ewW=r%QVa0#TC`ihead{R23Pl@x)a9golUT>^F2bi?53BVKit= zA&FdJ1*`yFxjxr8TVJi8uix{)9%`IC(eMXK+&XaA@D@m9D%lMQpp>^!$hs~^1!+uq z%FxQRCRh0)tH>g#%2HUWmNE1?M(+8drYY*o`1q!%6|3t>UM`Oxw(IzX!z(&x^;yp9 zGrRp3udtWQ3!8+q$m^U)PWc=ijx#Ca@w!sUi7EGz-FlLBhg+>T!z@=-jZrG{T~WY{ z-G>Ymo-1PwSC|dC!q|tcv&enp>w~q)$drxH>zLsrW^`+;7GpHy3Ni8q1N`wOL^r#K zF*H|`CiIkhWtFQ)aKmQW)3zWp3FuJ!mN0j@QWZ1zIF*4;R-tJ{2@8xSGa$EEu9l5t z6Uh{E*Ig!2BaFzEAR%L3J*H}WIefR;D7JEq+JcO=Qd;J*=7`<$DHRc9f~+E7;3OVG zwxMSZKUB!QWzz!|$8*lK5-?&rnf02@5~v(Ml5DApB3Iz2Vs_b4h;IzPQxhXg%8;GiAwcG6Cr zbj67QcgRJ%3b5j#J@D?JJ9N@Zc9OohbKpeCOM63|bZ5v%`wBYQ1^y>PU33QQZqx3j z=fLg(n+)~PJ%xp+PWF-%>4(#SP%qsZqG&4Qr~Tm72VQijkM1ih`Br5|P2)p0tw==6T}53Nsx1U_xhjW}ONDZ2J9<4?_=F)H_cvkU@GePxtpO zMTm$a+(2>XwbLj~(68k34ss@5f}jT{9rW;|lb&tzuAiRy>_^0#uUzaOxU{UV z>Hgs`W@52Z7c(#pMZ-8AK6PqgJOB6WJaswZN)wp6@`%c%9a)abKS~pgzh!U2ihiBC z3Tw+?)-5xWF%G!lz;-j(zZ3C%4iTEX z^%rSpGZ>;e4U1?7U(NGBLHfgI#N^Odbv@`-Z2_pK0OqcW{1K>W;D7{ z{-9$l8ZRdzvGQy@u{;{xoM&R;%ZbI2rIC@uVtfQIgv0Yqe^`H>eWouYC{G~T^p8vv zDaY@APvx6{@>Nj8P`Li$^Xx^v84LqXAHZAcTcy}9vX=|?+6iNgShHgNwqYC%Ju?IR z!FYotf1R77MzJ~Z$Nos&f}re0U&`_ECr|bs-^ir(Ju1HkiS}>o1>&|jO%!$mr;bm? zcKwMRe`3G!a@U{S@h8F9nRXT^-!3`6mu?WB+WVh1UOo+`Y#(znku!4#V^^E{_26VP zaQZ2Pr<{TGH2RY@{A&Nt)LO(t&HWm9e3>TFj=!{}r#b>t@c^=Hj!Sq8^Fw+O#oJIvB{PS!kGne`C{f}%^qmEH0 z;a^^(Tf7`-Tvo{+~iTZ3zM9e+yy6w}g0bKWCTa!hI-9ORKNY ICui#OA1lt&*Z=?k literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/widgets/icon_widget.mpy b/lib/adafruit_displayio_layout/widgets/icon_widget.mpy new file mode 100755 index 0000000000000000000000000000000000000000..cc8764563a8e0e6c4c16f10953c304f6ff344c80 GIT binary patch literal 1132 zcmah{&vV*F6n+wf9|D7r#FhrNCWc@~w!v{Qo#~-7wwXFkUE3tiq#QbmkW|>QkTlZL z!cC!yE9?oQgYybm@wMds@e|9L)fUm|hRtnuQ(6wK3^w zE)CN*El{q|mkCs24hZB9><0Fax290wkFaI#c-R2pN(Q919h-QL1^53O;!0!XQe%Zm zoI;b2rlR5S|0y#nL^kaq@CPoz4wVnwQQx&pNRpw8?GA8vDz_`^Annowm!XTCI_U`H zTs$x>)$eMC=|Q2V9h)lgG~0JI&$J1|ri~eLd($?=K0Vk!0?yYp8a*~^foAJn$5UMg zQ~1KnGY#tdc%lY4Dv@*{*)?&eOQ6u!^y7}_^ld}c9n0}(rzZ~8skWT~$i(UEU24)d z&7(z4nxbLb2X+AL5I#q$`nBo#G_@heOh( z+2}@0R&e(~-J7mpg>r#oW1+RmMwD6mF1b=*9tYWSdFB4f-opHrUNVAao<%G@LnsvR zVTH+Glfx+73it>gRoHw?j-ZGfMN#?^r@x#WM{#N=sGXD(DABrmJ>ci~6rWZ?d0w7F zb8-r$_Wa70j5}G2c)3rp_{A@Mq&f5OYB{0Bvb|L|O#AN_qU z78JJrl=m*4z6E2MPxJWxV)M*jyd4PC1M literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/widgets/switch_round.mpy b/lib/adafruit_displayio_layout/widgets/switch_round.mpy new file mode 100755 index 0000000000000000000000000000000000000000..e670d18c35754973117e01c6ab01f5c00ef761f0 GIT binary patch literal 4267 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 G#D4(lzk-$k literal 0 HcmV?d00001 diff --git a/lib/adafruit_displayio_layout/widgets/widget.mpy b/lib/adafruit_displayio_layout/widgets/widget.mpy new file mode 100755 index 0000000000000000000000000000000000000000..83dad82ba33dd9eeb0bd70d8c75de662d5e01740 GIT binary patch literal 1040 zcmY*WTT|0O7~QmmmNb;4X_pibLTFJ7wo(hj=s1IdA{Pfcav8>P(vn6R2b)Z~73$Nr zT;#F-lLP_%0lxU)lke((!12*>(-wivWY0M}=ljm?eADergWRBBqoQq7Zt zlI8>w%Z6Sq=1CMGJ3y4nMm~qs3j<@SCGDLG=w@%G)mpexCS1vpn(A`QQz*-CRkK7Q zWf`!tY^sJ%Sn}35YnZyBny3Q&HNG|;EUMeBcZ3|;%B$Y5-4h*sB`JP!ayhMSwt$dP zx|>XHYN$}&NGST7Op7nWpjqCY2Grc}fy=2>A?+}1}%PGKmIT!Cs zyP-FuQ12Hf$GnFzyl>#%z3#p6p|A1zUr!w}fV&3!SuY&GxSAm=?tN|z0t(V83WicH z$a7-Kou*)zpobtN*ha9MU^_v96Znplx531ek6?t0kdqFFSqgnHS^cn2jnadXpXm%k zA%c%lHX4oQ#nFYi;7|>K oCAmsf>>=t#JrX4kVXf91i6tV{`>~JQuwjWvH|uf7!kt_G0oWoohX4Qo literal 0 HcmV?d00001 diff --git a/lib/adafruit_fakerequests.mpy b/lib/adafruit_fakerequests.mpy new file mode 100755 index 0000000000000000000000000000000000000000..50bd21be5cc5f553ca79a7f721b62b4caef47205 GIT binary patch literal 517 zcmYL^(QeZ~5Jks!5<9NjZk(_LT8XL-FHsXiNcsRT6i211iok$`DyZD8y=e@Iz1SN> z#ETR40g0b+$`|xU;8)mI1T@lUq&xTO9;XEN?kEpPKnBSqYzphz z$25+hv=>bQy<|L$BQgSmPgxk9gZ{8B2JY?)m-qUw4J^|egd-Y}F@?1uB>_!Rz$qtu zl6rm|P|!v(2|(lYD~H*)7ufT@h#!&dd4N1Gp)3}c-RdEh#Ed3<3iB%Z7djgkogwEe zeQew3AselEw)WUr@c8@}bDSZn-Sk7CtB~=wS@Kz4*Prz-#r~PsS6qL_dWMX%-d5AB=hbpo idS1RV<(jeBmHZDULO<;pt2le|UstadwY6QiQU3rG(2))R literal 0 HcmV?d00001 diff --git a/lib/adafruit_framebuf.mpy b/lib/adafruit_framebuf.mpy new file mode 100755 index 0000000000000000000000000000000000000000..7541936e90ae3ecf35d2e6fdc970e0f2b1b5507a GIT binary patch literal 5336 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_hashlib/__init__.mpy b/lib/adafruit_hashlib/__init__.mpy new file mode 100755 index 0000000000000000000000000000000000000000..6e0ae5cef6dcba829c3a150c55e53da887f3350d GIT binary patch literal 691 zcmZvY!EV|>6h)tHunl#RfzW9h+#-=wMJ_U6Ociwzg%T+Q(WVHIh($CQL$D>lmhGfs z=c=o2`Ymbu0hO9veduDokIAeP}iEY~t0G+vk?aYlSBztozKnfPFJ)ZzS8`VJcEu#VwT{TVryVqVX_gY1R%@r3A zEvS;}fey;QnJS4m#sBRkx%{B7tui9u!xd4wR8e(RD+50te}sZDoj9HySTmm(H-;!-U+7J)i!I5I}@@W7nYy*V`v&T~a@@ z1g`(4RGLuo^-wjPS!w;^Qhhz$hV7Yj${!YiMRQg&QE3bC0AKfuMP_gmX7ahWWPLAPNzm>d5J-$C~^jpkjQwtG~1SFyaN-FW} zBbmp%EMP$vu_z~SLQdjjKSYwk&^rmEe(Pk}{WGL4Pu-2EgKB~5&8U-VN>kYE)|x>b zMCoicB_oWML>i6K81DgoLeu$WKCOAh8qhJDAZEhDL3+ph1Gzu3 A=Kufz literal 0 HcmV?d00001 diff --git a/lib/adafruit_hashlib/_md5.mpy b/lib/adafruit_hashlib/_md5.mpy new file mode 100755 index 0000000000000000000000000000000000000000..59a6afedd71d6efc33c6caeb69c78640cce86228 GIT binary patch literal 3337 zcmaKuT~Hg>700g@SrS49v662vV8B|yvHZdAy?4LjxW*U*c9S@&y^~;1#uh@@N&qt; z&)}pFDa^l)>W}xHp$e?<3>?W!SpBu|&u8$^% zQSiczvEeidWp9pUMz5mqKxQ;Kk;-IHXd*j)Bb7zD+T2wia7gGuLN5~fkZ=a!U!A*f z^1|uM@0{+rfV@3D$lKeCynTJhd*%!ZrAJfO2h%7pmP~zud~F#B4W^w?=*FlMlyZAQ z12=|-(&H#NkxgdPD1Rb4Fnm4r$>oX6r)dTenayT<|69u<~=OXX=&MOLn8{s#~ZwzjP#|V!R9wR(Pd5rQH&{F&<+K zRlk3-yZg+0;C>PbH<9ou5=N1bM8W_PQb-s?!UXarQz$T)%qCH2I6Znbdky7}bsSLx zqsb9)7vb&X4bFX#J05hLBA>^GH$wg(BPKI7otUZ*p`h0vRCG#IgDED3FJ(drrA*QN zL85Ae8dQ;qzmn*XMGf8X2dSno*_5d!!`hTpKy-z#i7GRwqG?b@Q4EzC)HIBjaIB*1vP@N`@El4tRV9WFtfQ5v5aMx}sT!m+$cK6wNH7S` zQJDsXOsGk8lbD(+%TPxlP=~6N@Hz@H6Rr zQ@MVHXojgUh4&er1PvN&f?r0cu2M=Etf9v;GgMXQeSqnk26PuRL;oNb3~=v+K@wvo zXi(r>m?*S@=YUKVE;x(mlh zqqlI!3YPC;Wd@T4OqVhH5~~uDJh2o1+Qb?`I7mFWiU>GFD)4UN#nogNt|2}gCVpH? z0$3!KI6{ILUm#WCN+#gSL@JaE90~<>!?Y8{(nj%FdEpt>o}da@I+%`q|{#o#fA) zYCa=XKs2Jg=B2L5?P*3M>$-ocnF3)Yd&;RcI(Q3|=V&YP<32a3$_p!7VYn6Yqm{ zuT&BDoTmua!3Y~+gv~I*{V>8-7-3T)<;xp?@I>qS&e-=_TGOW`yI8kZswmdgOWtB# zL#eyB7;P+Rp8iB?zVl*xW8X>pFD*kOXRo%CgRz*>(LErZEiunS@t4KO-l>-i9+{0t zuq;pgunCpK%E-R^uO63IzwLfx7bEqF`=Gv*ScN-$U0;kgK@h61KI!@pHl?*SPHb|E zp8l=%leO51&GI*=TI@$%UG|gLMb>z;c#%YE_DZIyxzB#uIXZZ-y|;ZNJNO=?fr?_J z;nKygA96vD9etn<>KWg3_r{F1S5LcoV)i6_f=5wHtZyC5H<49%zEh`B!h}?=Z+~!qpZ)z6aaS}}j5cdX^F(o2(mbhr%U-dy&;Dmi zTYG!ESjo`WprQnPq`m}&A`K;Iaq8*h_-}-!zIW`6mV+O6bkL6fx~@BW@;VCptqZbv z^!0u_daflNk3(VE`|#1@Cn7HKelp>ySW~{gy0&gxv(hf+e<;?h!G1kwElNJ-ey{MbZ0)x76-nZ3tz&!1x+}H1Y!28qmn{I>?y|Giigdtb7l3`!Wp7)BSpMzH3Yz|n}W#@o} zA2vJZE&~g{XLi^bU=5eO4J`bk+tFMA_AQsa1?(}G&0EW{{6D_?6NGkj&jbH9@R9(3 f^0rmp+;CPo>;CpCZ>?^xrmVHijX3|Go=E)%%iI>p literal 0 HcmV?d00001 diff --git a/lib/adafruit_hashlib/_sha1.mpy b/lib/adafruit_hashlib/_sha1.mpy new file mode 100755 index 0000000000000000000000000000000000000000..8feaec24d604940fc682befc45495b00fef46c95 GIT binary patch literal 1625 zcmY*YO;Fob5Pp(>F%B5n2nQT+EknTk*|OxHh7d<~0t8y>0%e>w^^XwPiDNTZo*_*p zBN2DPsgs#zrngL|mv*KX$q)#TcE(BC{L^FFTzcXdXn{kHeYUw&qxW|A?YH0VYM+8? z&~`>o#%JQQ3;7fuO~!M{bSlvw%_ZZmzWHmQUZ3L^@+=SPm}@+j8yN@6R2GO0;+$c8 zo=;^n@ifp)=I7HK&`o8a4fOoA`BY{OXv-9!E;`5YiTo_ka~U=}15xoDn@Rz5G|kQO z(S=i&Lqe%#d)Vk`e%MG+MaXt>j;8MS+LNfqO z03DmmXRZKc5(1MDn1sNj8!ifn)BU|PUacdVOMS%wQzD&ZuT*tyCVrIzOGXi?)#zNb z%SSt%B;|*?kM?`LwA=62=t#=x^h49>)9Bo8KTUc3ULUE^QKX;pd%UEdR#}4O0<2|z zYc841r)R7Q&g!9h6Dd9i)ac*{(5WD+*Gt0KeAf*Vl1&KU#9iD@0KA<*@D2jSPZA2elLWY)MDThN#SN3B!ca@0cx{+fE@_V&^j(4@ z7U=5491_+|p`l^Pbj(oaL0GIuq7YVeI_m0s`vf``kmP@)@8yGk-x10^_PfQR=?g=@ z(?z-|ArOmwnrv@Nw6|Th!H4M>@9gOBXm|FslO5-*lQ&`~;WLEMkPw#mS8xbxAXF5> z3Ej~Ci`}v zA5878t$$P5@4#K8&?*)(z6s(H`C0M#%8S*P_g@LjJ#qS}us;3y+w;nA-!ja_Na*9O zjm@pyz1`OY*k=9|?pB>YR-L08o4Z@kg={l7f2w#?wo_GCcw=*KV{7l-CS0!xbep+k z8>k@EHevk#(TZ&*fYm?vnnHisf4Kka{@VJ~KKybIu=3^Qz86@v1u z2r;WH^g=ZZy{pj2-ZnGVCRpIlvA}Ha?38V6bkdILVZsvTkg*=@v;&1V_B^I2AHjlT zQ!@;Q_srNxAqO5<7Zbw_#cC$ln>202AzkzU(w`U*UdF73 h)@o>r2OLE@&uXoM!XMp0ijLNl3?Inv`%MhZ{s+x<{4W3i literal 0 HcmV?d00001 diff --git a/lib/adafruit_hashlib/_sha224.mpy b/lib/adafruit_hashlib/_sha224.mpy new file mode 100755 index 0000000000000000000000000000000000000000..9e2990aff18d19a7f8701f3577f610ae54601eb8 GIT binary patch literal 76 zcmZ=}V~}TIFiT8HOe-qQEQ!xZEY8TuOwx}p&PX&eGSMrjWZ>t4uo?Kkf~IB+jT#(W Xj0p}6?2Q6UT8z@nGE8Djk%7qoB4iTX literal 0 HcmV?d00001 diff --git a/lib/adafruit_hashlib/_sha256.mpy b/lib/adafruit_hashlib/_sha256.mpy new file mode 100755 index 0000000000000000000000000000000000000000..6affd6c1bebdf0f01f70167536aabfafc5138cd8 GIT binary patch literal 5794 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 F{{RrM4Fv!I literal 0 HcmV?d00001 diff --git a/lib/adafruit_hashlib/_sha384.mpy b/lib/adafruit_hashlib/_sha384.mpy new file mode 100755 index 0000000000000000000000000000000000000000..bbbf995374aebf7041ec55fdeb79535cfef3797e GIT binary patch literal 76 zcmZ=}V~}TIFiT8HOe-qQEQ!xZEY8TuOwx}p&PX)2FwrZhWZ>t4uo?J3f~JN>42>Eb YT#N}04eX5qOj?Z6%rZ=3Op$@f03<0A<^TWy literal 0 HcmV?d00001 diff --git a/lib/adafruit_hashlib/_sha512.mpy b/lib/adafruit_hashlib/_sha512.mpy new file mode 100755 index 0000000000000000000000000000000000000000..8ec59a20d517deef21e0ca0e2f3f1a228b524214 GIT binary patch literal 8023 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_httpserver/__init__.mpy b/lib/adafruit_httpserver/__init__.mpy new file mode 100755 index 0000000000000000000000000000000000000000..7467b76ffc24f67ad457b78d04c7a077890ee0b8 GIT binary patch literal 1622 zcmZ8hTUXOq6h4aFD#8|Vi*zeEAY$#brIf3RrpW=KC5dU!#k?G2d$e6ZTa(l!53`m& z%)gk2`Khzpg3kDq?|l3E?Q^ot5i$Sz%5GQ>KSteVq8drkiFNcvM|q{1EoM}%b1tS* zrQBw2Riw&c+^mU-vJN91iB!-&(Jir3Yv|gE3cE=|w~}TpOq%VM$VU2ew;AbQdHTg~ z+4x_ajG}fVR?1=RBt8w}hTZbQq%mNZ_L`^KX(#e)Gfv_Gw_vxvgs08=Pp=)1n`|U5~}|p?xTW^Nx(j4u4KT9rQz)9>_$xLrHZiGb+RBjvZd zi53vXD(a)u;Incu0amI4R$(cZ1)-X-!1)QW=OT)%8vmUP&*CZ_k? zBgax}99OiRK>ChR;UfN9=_~2`uCLZPLzeI1!0q)ID5Fww-*Kr@VO?Yn-M0)q=^q*n zcUC#(Osj%e3lAV*hC3>WxnA6$P>GMry`z2TRpcRiaQr&QOt`Pvw;+~1!w+n3;%9;l zk^NDDg;}=GZ;K0UiCnK!+m!0aG2R+>#VA)KXIo>#JDXpZ?d&VhcLUdSD^<11WwL=h z^jzQYkN=x#Q)B|yRV<=M_b;fbO2uulz=@Aox^Mr{m&|=ulQ8MVJo~{HmEye+^PixU z0Hq?`X)_u&`b%Rcpa0ZM8r=`MTKg=2xlr=P=Rd!HpPm2n+gNt12a8O>RkRlczWNSBa1DlG1V%H%=`k9@A-aaw zXc&iS1V?BTM~}b5IHce@Ou!A8gsIGE8fYBHDTOJzj@M}dC+G&=ph=vhDV$>eo0%)= zX}XCw8Q+2#xD5z*U>5Ge9HcYjX`)+ri)L_!ZsTo2M7o1_XclMbF5aa%oTD_RIrbjs zxli}-9^-jffCrhO^lvne^R$2q^Z*|)zX(h45SHN)tiWULEkldANK3dx5Ah)_<1#(M zN3?<~^cWwr{}ae&uBLydC-{W2m}Mphc__dt6nO$`l*1h5F;4|7&?>G{5sU0of_2z{ zP1u5M*ny|;44%U-ynvTrKp9N1K*ApEXJ*m|RKgOi<2r5N25sUdZQ&Me<2LQ!4n4)E q^bDWTb9_#_xJxha1--2(V5iA7{rJkX%SpgN9n~^Xs=3*GQY*Ckt$+D1TgK~O=M%S{opv;*R zvSj*iz@MsLU(oE^X2`Xyx&`zhQ$oOt7__@)zO_=%W>K^wYt>WP&-bG z8jem>M>mbf?H`Yrp5Ix2VOgdH zGCd`Kt6dfcI~g(d+MW@GO0BepGi zsGoxLtVs=e+P1dg^~R$o!Z?f#CxZy;u(AyGGX>OEZTrNuG!UFg{=i_v8yuHlTKd;X zh2SmS+^p!fVwjF{>nN%zjh>TY@d$G6LM?R+gaUb?E zJ;SsRpTRTLN)}Kc$KyaH%OQ~ov6AIcFf8UgIGFX|P<9H3%f#E?2O)4VSJ1+XSU~~2 zlm#qhIXqt`{2;w0N~z@)H!68iM3zTad0w8&LynVi9^`v@7)GOI(uaBfe9DcX1z8?O zqIr(=9T3Hf#lp@tRm4k3#PM6?)`B3VR^8O-8W3F?16EON42X{zJn1Xo4_-VhOmYPo zA&BE;GC0o6g@lB=>H7Cpiu^D#E2AXjxmA9dFaOyoz9CZbN&#;4DaYkF!u4Cf3c~$# w+TA`F9USZhe=dWxc9r9PH><@>7QLR3!VFh*g>*s+4M#b?^iuLA*)A=Ue>2hI;s5{u literal 0 HcmV?d00001 diff --git a/lib/adafruit_httpserver/exceptions.mpy b/lib/adafruit_httpserver/exceptions.mpy new file mode 100755 index 0000000000000000000000000000000000000000..7890cb5e0d9a419298307b34d85f4641084d4a32 GIT binary patch literal 645 zcmZvWOH1TH6oo7Abhp!1d_*^5F}}eE1|Q(KQCp!mqGL9*GG$WQMK?*PDy2mP+l2)D zGwLs#q+)CYsm(p7&bi+`GQsS)c8DW<&2Fi<>KupqIP_Tdo()3qEkA1XPD)w7G)$93A_JGu1Ri$r2Jk! z#9^2BFz>YEVaY3aG`=~ZJ;Ga*%`i7rb0DH&|(JtZg@*$L%x+gXe8y zvBaXN;v!ao5sgt1+d~hJz?l3x;JZIna8Q&Gj^achQs89cWn>yD!IRYuiuYQ7t#i%Y0z-=JYe{q4ox|lzGpy71}xt*p)E)IJhb}2RI`RN z;{JlF+dL0*t!0kX+NajDDXH~B4_bD^$Yufrq-VIzHv|;7_7*CG;7_wQ3Z19lXl!f& zyieBVz(oCHN7+&Sl|?gKs*2`M#nrE(GA!m7S=pwfS=9x0wp%T-e_FI3R2QhjMgIX! C^rLeC literal 0 HcmV?d00001 diff --git a/lib/adafruit_httpserver/headers.mpy b/lib/adafruit_httpserver/headers.mpy new file mode 100755 index 0000000000000000000000000000000000000000..126b3e0494d7b560cf082c311f8194c6dd77ac07 GIT binary patch literal 1146 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_httpserver/methods.mpy b/lib/adafruit_httpserver/methods.mpy new file mode 100755 index 0000000000000000000000000000000000000000..07ca855d4797ee7e072f0f96b52a032768665405 GIT binary patch literal 155 zcmXZJyAFad6adgGk5a0^JKebH7w8YTkkW{Wp;hWEL@+oQ2~-njf851$B!lG?wslkA zhS%L)I_LVa9p3G*d9<#3HsiYgz?|)r1#Wa{ftj;~S*8xkDi9{MG6$ZkG=oGNyVpet u!k$v8Ad$K#l(g_&!D3QXRrZG-dFYdm0RRFU6d@;$F~ulI9IrnY@F2nf literal 0 HcmV?d00001 diff --git a/lib/adafruit_httpserver/mime_types.mpy b/lib/adafruit_httpserver/mime_types.mpy new file mode 100755 index 0000000000000000000000000000000000000000..1d402759a41c94deaae7edf1a6217513dcd4f7b7 GIT binary patch literal 3445 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 NBfAmUNU`9X{XgZ~W|sf} literal 0 HcmV?d00001 diff --git a/lib/adafruit_httpserver/response.mpy b/lib/adafruit_httpserver/response.mpy new file mode 100755 index 0000000000000000000000000000000000000000..98ea488a2aecd8736cf923199ff8b5835fabf4a1 GIT binary patch literal 6658 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_httpserver/route.mpy b/lib/adafruit_httpserver/route.mpy new file mode 100755 index 0000000000000000000000000000000000000000..706c7c010ab52ce9c3a9f58ff604019e9af4c3cb GIT binary patch literal 1658 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_httpserver/status.mpy b/lib/adafruit_httpserver/status.mpy new file mode 100755 index 0000000000000000000000000000000000000000..80cfbcc5cdb2bbe3e57828b594a532572442be60 GIT binary patch literal 1159 zcmZXS-BR0D5XTP=4#XB9TSjr6lqiT$hXDe@B>kFBge(^YeId(a(wl=KodnGo$&rtt zlwroEy=brcDv&p5-y(0*J!Xbsrn>s=|Lp#EceL7l^kik``ydKFWP_OEBT9RHlAVz3 zMV|(A&|mMJp*gNSW;E&Sp;;{>0VNUQ)i5MIMio1iv^1e4p{USG2T6p=tu%WdM-fR- z*-oi+qsr4^8WA*2$*&Y~7?V#JqaO$j9t(19nCS@cynVD zan2rAHa3u`dAjQBO$atoRn;`zy@?d`*mkhy*uHN2@Y+DjuIl-QYTglFq7}JXvKFN z3{$c>#_nz0P`*Qo0V{eo?A6x21Kq>A=Q$qUhR(~(!mwOZw_r7}*@oupEX~k#3}YRr zhNLLsF`Btv{`@rH$7!y$xlHOTO1M@ z0hR$ryZk*sfuX@q0#+El;q!p=3{Cz%pvcgcCjcJ;UarZ^tjchmp91`f;g-zIY784P zGkXO1J1;Y{#|%p{Gy9sMz)u4%Fs$$o0G}|NmzkNwa7|_jPZ?5~B`h)=$OS-|;i+5% zT-pyOE|*}rKZ~#bC`3`|nYhg7#BUTN7L*BbM#+h@%002PA5MLof!=>x1 zYVq?`mD>+TuWN;w`txD+N+@0n#V@U?D}lQfxG&+T`gD4>K77Q_Rd{#=`DHE~?QU|V V`fy>X3DQ5H{VQ`7{`xaK{RhEQC~E)! literal 0 HcmV?d00001 diff --git a/lib/adafruit_io/__init__.py b/lib/adafruit_io/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/lib/adafruit_io/adafruit_io.mpy b/lib/adafruit_io/adafruit_io.mpy new file mode 100755 index 0000000000000000000000000000000000000000..cd0f3b78e98d8585b4140faf8cbd3fb9a883e71b GIT binary patch literal 7976 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_io/adafruit_io_errors.mpy b/lib/adafruit_io/adafruit_io_errors.mpy new file mode 100755 index 0000000000000000000000000000000000000000..7bb51453b4cde2e78b5025150fef3e8a2a4ae945 GIT binary patch literal 398 zcmZ=}V~`hOa!O1|Oe-qQEQ!y|*GFQSEz-A~^*IEHF11lfMScn){ps7Sch%rH-fg@X? zn={0SL4Zk+%Y<2sDa43TfEmnW4l!a9U;#5(0+X357}%IPcm=t|cm$ZlcmtCgZ8$iY zI|LmVz(UMoyc-l47{ypOBr`Te1Pie8@e4GFsHtueVKZYmyjg%f^oWq4D#J!mR%Hee pj!nXxTg;fu7$YIZuyja4jbTADrZK{r2W*TiOeZ5yrx_zy8vuE%W|sf} literal 0 HcmV?d00001 diff --git a/lib/adafruit_itertools/__init__.mpy b/lib/adafruit_itertools/__init__.mpy new file mode 100755 index 0000000000000000000000000000000000000000..6393a9ac29d73f575b54dc5442a9556b976a9375 GIT binary patch literal 3203 zcmah~U2GHC6~1Hg<2c5QC*~5sEM7adgPl0UHa`o2IAcQ$VF}*ENeoK{XEHbzj_ulG zmQ-zbCb%llcIAgYRDCJhhe}oZFk{EiR;olyfNJ~Fst*fo#j2IqhpI0P^u6a!90)~K zlPGiVJ@=e@zH`6x-EbS)pKKXQ&L^)HN@Lo)^=(Y%+uB3E>+hAljlWB4( zFH9v1$PmxM7GxBc^66{}F=TxtlTH?qePf9eZiqs*2%Czig_}eM?sPhnL8eq8SIW;V zAzcA6S7GIPGE)+eCCT%p#Zo3ILSjRi=wUArXAZkf>^SQ;j zbT&ycEuv#vXWS=gae*rc`Am`*7KJPz0&~6~6pKjSY2cT5K(fTl7jpSe7Sb@rkO&mx zYBEz4kTG4%qycevUMMV<#O48}d?7bq;zeYHxI$7yrlOcEEGF}a5tG-1jW}(h0KvYQ z&U2YuHYGqQnW2=B6>j7UCy~Q+O<1~G%JQfs4FruqH-LfIf5|hfrjff6^ve|w<+&~ksSMaUps7SZGca#4s8vZX~h7c%Hv?vf{3Lkpsq zFCH5hNWq`}=P(yF%n}twomjSneLhkn6N`z+JSrgG6p~%vX46)P8Tzx1gS<;&#=`X^$^l#!X)h&f4P=Q zRJk$Znp#^4>K?+3^~ZQQ`l|<0$hb?2NqVQkjpM(^7YRhuP~R6<%~#+nvx3_q&X@EWC0Dv28+kn;v(Aof6HGE1X z*d#Bdz5-nL{ueF_!Bv&tLggW-00a20ynIz#iTQL>B*YdBzj+J8=kFx?8pAK&HT8K+ zd(V9+DN=_YG3OOEsDpy@lsvN<(jSph}tAX=qC>-#yWmM`mLn5 zIh0gFQC~b@kHq+L=tbzgeKG0xQoB88b2uFboOa+@6fQb();7(2^i?F0@S;^h6~YqL z@?P~Ym0$qOdP=L4LGvKe? zJj?dIVO@-022X4Q&wooDPGGwddmafhlMi5zalbp43~IAGb-?Tb=V|Jv8?e z&ERRR#Sr%RDSQyRcM!Ta5aU~J_WgolJlyb=irW`;S7Xor6bV;Z){m5Kua=t9-Ny_C zVcM^B^-n9^KBapg##5mVJ&sh|3J-&WT*asG<>&!skgE*3?Vg}(!^O|W8CL1)3sS`0 z;)Mu@VK|_4!JqG0*iHrz5&l~Ou%dMN59>TSsP~f)4sbqy&z%!MI8s9|Q z+TL$P_E(=rMj@j5ENqDJpV?lmQPKBf<1-g3QK{Qyw|m`Aw=?CnyFfM0*@$xV+Q<8P zyj2f+7Kx}0X;mx2xvKPKWRyubpiKp}Io83rCjD7k-v(oC=cro!i`L>qe%4fpotb__ zL}-POV~YrFw5lVKXc`}HHQq}lYVynf@2l2cY~;6jDyu-3{BV9b7O)R@RlX~Ax!oQj zNC8KGulq=}XCQFqzZHoPr^=3~t6Q`Qm`Ah;RH|B4Uw#?{bZbqeim5(byeU`gKcy{t zHT!6#4#M>HrKy#ATzVGaYIS)X8aZC8!vMbPwL0nRYW?L(eTvP%E|9K2f;oP%R-b|) zw7e!;ThGwQe~P^exT@jGRt>29^xZ~p>R9FH@0f0W>*?>L2ccb#u8Jz*UZ>0BZ1p2( zHsw{ri@elB@+7!h>qK$@JL|7;V+H^X_Xd3wB>H)DL?4{3Jn|+T7!gds6D7}l5u%+R4_E#!8JrN)04*&aY9_LLv=OqnCWb5jf|ts53d|O*<0Gd? z$DeMh1t_XK^f|S|J$&gdb>#|DK#rSF3kYBIEXnw8yOwchgBfum4NQRl-p~)8LY+Ll zmb;x&hs))#+Z=uN@g9f0*LgrISc8d@7qu1!vG<}i<}%Er0eStM7jRf=T{9 literal 0 HcmV?d00001 diff --git a/lib/adafruit_itertools/adafruit_itertools_extras.mpy b/lib/adafruit_itertools/adafruit_itertools_extras.mpy new file mode 100755 index 0000000000000000000000000000000000000000..f981818e9b3c9c2c7e7ab23a4a783566d4f8671f GIT binary patch literal 1864 zcmZWnOHUhD7``%zbHmfdL6|$(5F1o7JRlBLGuB+_ZZ^q;yWpj1!_c-4<=YF%zsOK^B zM92y`qad3Z*^~@Z)0F(^$DxdLWEw(#L@%QD{*TkBd0H(ZJS!-Qu%}1}-v_J@Zl-1+ z_p+Qf5njt1|na`dPdRIeF=DTIayJj2@13m+bEzRO1gMAltTPSJooD{6=EDM#S!L-b`Jvua3LS+vm} zkWA*8WZ1rEG6-ifz(=!hwi%9Zmb~wNCW+(7K6zA{up~As<%EJ_A~y)iB41r23cu~i zXt{U3=aEZA){5Iv$kpAojVawOEtTf$W9&8ZnDQamZEaz@(($e|V5MD0$W=t%ruczr z>iMbB(S6xGDC~`Zpm*y$I{kLlXJtc#m0vBI2cXAZR%h`?pb32&SwCQQduiW7sHdmg zwmfuwQ|!-{JIda#yUU&zxO@@Lwz9W;q3na0??rpLs;!CveOd%D|#4WuF1NE(Apq$$`;nu9H*CFmyZU@K`2dWa|JCElQq_|g=!VWzu1 z$PzZ~_hKAj2=@E@QU4A9&2Ym8x#e&4<6*`>6?Scq+ey!s|IVLtv*{$WgZ<=gA0qd7 zL^z%yfz?#lwKm}*9ee{JsW7uP(MUS^CeqC}lc4i%A(weK>E&BVi1(0w-b)4n7Ycpk zic`==hIp2QsU2%4*LX}uct06WiCo!zw~LF>`Q7+XNb3tN$lPS$LM6(aCfr=S8e!7F zjGMNZJrZ}`##Y7mv6N^YG=Pzj%VXYSxXCUG!r-(7pVCenj+1f1|dbbDA}W=FM?mZ;ZYM z&69yoD>hUr%0yk_b37ji#prL;GaOp!gLofk7;~MT+2++gG!(v?TdCF}F0nK=h5Hv{ z^dH(XY1L{?{UN@T3< z@8j-?^l{%>Wo>QAcgiinc3p_TAMx-pt1lURZGGc-l(q~(_jPdKjGM36=9G6IULHxt zj&IYJ!M@(m@YU5pr}u0ay-Hj<35+_nMwv9Xb`oJKzt1h61jZ=5lU|3`Tsl6-?92qX YB}j|b7|)Ia+6q{>Y4faBqV@{@57!?WDF6Tf literal 0 HcmV?d00001 diff --git a/lib/adafruit_json_stream.mpy b/lib/adafruit_json_stream.mpy new file mode 100755 index 0000000000000000000000000000000000000000..564a4846eab002c37dfb27c9880885800c6c389c GIT binary patch literal 2314 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 J1Po|qD=q* literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/__init__.mpy b/lib/adafruit_led_animation/__init__.mpy new file mode 100755 index 0000000000000000000000000000000000000000..23343d2324b3d50b97205c175d38e986251ed0f7 GIT binary patch literal 289 zcmZ=}W02=#a7j!_Oe-qQEQ!xaO^Hv;%gjwI$;{8wkB`sH0}96L6;v|tHwreUOXTL~ z<(K5=WhTex6*F*@Wag$aAc^G`GYG*|F!;tx_&NId2ge7v2F3dZGf4SDn8B{j{(deD zO|Ff$?K~!Gj0p+}2}-5u3Q9h%=?PkH?d)nEd<_CjT8z@nGE8DjkzRb^f*ki<+#`(` z#F)GoV?D$h1XzHwtTHTOERljNCJd2AjACqF5 zds`gDxRly6#JB^KnH@Men0OlaHzXHuaIiHB(Y^X ztYJ(zqll`PapTC18Z3?w-6bFwlCP#pVvzdzsme&2hmQ8ar# zbW72cExT>FxS?xUX&Ft$HOyA|CBoQfK^m8=4w@jvk|35UX!^}{T)(`A*DtT$xL!ki z(`=cp*)mkzbkNEF=S1|SLwZCyy6fsT%J7!4qc^a*d0SUq#42sq#CL4N)e(s;UAG-X zV+Vj15R+In8>WpC*izb#t|1<`^c@$sElq)r9CnSS4ufpDSaF9nP@*&(6N5ZstApYL zE)*Z~5G|#tqZzfMHguqFS`8g&riZn75Oxr&*~%Trwp%XZ4oic@dFs`>_s*s6-n)Rh zg~@VaXqk?PpaDkNf&uXW6VA4I2c^x{kn`nM@!^Q%maXd_!pOGnv_TQEWi%Ry#bDBl ziK~jH{i_+A7NLxE)iI(4S{pPjMOwk*?j!9&WjO-r}k z4!X~fFMP#xAPhGQ$3@+ZXj9oi-PP`E2}f7WmgXQzRT_;=MSUL~scpNi<(w;*-!t6p z_GSreEFYeK`O@L#S~YAHE?K?fZiAL-*4UkB1Suw`Vi*YUo*)fPQNd~fHfW&bw577i*I!QxxB0wU=rNtz-Akth> zQkl<|4?Ybo6GDt;G9v30vbm*fHk;4R!#kTz!LR4@vAWO1`1m8~=cl#T{l(Cu=PRr5 z@%b^&=Sj)u#~=HAf*z?LpPzsbwFn^j(C6vC&okfnJX`nq$*#|Hkeq@)FR9&yIpV0` zU7)7fV?Hy(9QPTv8dmqHA48{42y@;gkCwUxRWZ1nv@ zpPBe6SozEtzRDl;Z!%NeU*6@X`s{2KZS>g`yjOC)+KoX$?4Zxi1(7p@C4JCmCTnlh z`}|~|O$YIlKuA6Z{cGxWjGPrbO}YhV<8rdJ68_ZW0ob7WTV_T=nZU|H20xW-KUUI~M5 zK|Yz77rY1ZVs@CJ0!@LZU||CCaypR{81Dmt9N+L>`*ImQ!&4 z!nIyhSJn8wB(8fv?rb(p}3&J_?2N{TyY+<-JI9?RIr;_?Nm2b@l literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/blink.mpy b/lib/adafruit_led_animation/animation/blink.mpy new file mode 100755 index 0000000000000000000000000000000000000000..1dae908fafef50c16a4dcde60660ec32634b1b3b GIT binary patch literal 402 zcmZ{d!A`V5Q!MC(u;{+s>Xy+Mvis6+dnJBHW0_@-GGRn zd95f?v3uD9BFX3=MkSpIVMWbKPvs!xlt50?bt2J>Eb3Ks5tTup@s>bw#87zh{`fg% xiJVjN$)H}D&(uV&unV(7{Q2c|UPC1Lb{NLGI(r}+7!xJfpG8Wdh9Whkvk&c#b*}&b literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/chase.mpy b/lib/adafruit_led_animation/animation/chase.mpy new file mode 100755 index 0000000000000000000000000000000000000000..4f7fb09633f3a83ec58188244c300c6e0fe42259 GIT binary patch literal 1137 zcmZuu-%s0C6h7DaiNg}d4#o|vb)h$fw1g4TXb;l_Nsy|6HUiUVwg<;`9O}x%mSYCl z3wBy0CT-F*?QMU=lCD|#rjfrnx=ICDWzdJ zx<+qEx*eVH#5b;3%_i}NaYE5E+EVv)=tiOqM?C<^HV$=DvF<-4osgoOqFMVb7pAq2 zX6hu_vrXOAfxoXhBr`1s*wG=<8&buP8@cnNDfA_&%Z4_jJ}`~8OT9jX#f3XXtEIec zueA4V+j3mJ0i5kvw(htc=+4Kw0^7EA!bXQ%iC-+m-|61zuK68?ymj=1mIc1ib)`6} z%bv7hdK{BQQ-NtlWNIE4Bser36oa)-^T36Z!9qX`S2c8O$~b&7;^8o$iXN%jtol*@i;^@!j&j*yt3j90oll7-$7itGRUiwuF6zY(0| zZ(+b_B06~Tl;eLbb^|r?^hfe6H;pm&-Y;e_L;KhHECykMj(meb;xI#Eg4Tx9K#Etj zdtOBk4*4Cu69 zfSb%fMu=aym{lMPrBkcb9P=3g;zi-y`>V3HMQ$)jSdM)0*CfQw>CLJdb0Yt-a`j#8 zZO+WiZDh0Z{PO&=cS@zD#?JEr0qm>F28NW>9~7D0T8ZNH2>Yi;XFJ}j@??$3#=O$U zJHHQwPpHs8yZ8B@<%Jrpv9$JL*!c9VTHilAEiqNizxxq;mF!Tt1$|{b_MCqYLjf(O sO3T{ekBE~pxkay8C)>KB)xSsaG)e7x-O~<}>{Q0<)O)F95y;>82Ng0m^Z)<= literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/colorcycle.mpy b/lib/adafruit_led_animation/animation/colorcycle.mpy new file mode 100755 index 0000000000000000000000000000000000000000..7c7420998e7f8d79e6dac181d24a54c908665005 GIT binary patch literal 598 zcmZ`!T~E_c7=BMTx2`LrYs>LeDi(o6aY8b;Mekta#v9FsgfubfYI`6x-P&{|%3U`w z@y0*m)#=3j0RDx)!8@qC>V2Q9n(II>^O)({R8uEWWNCtdT*(31+QLHCkFn=^L-HJCE|6NKKo`$ zdZABa3PMB&G=}Ym^+wRQ{uZslNf-uEOkF6B6k!n3DH_#>-tce~lM?D0390yr#BHMG zjLu=sOr-1--_Wx-Yrd$0lq++!49>M3bXFl+?)_>ae8{(4ZYe1??|%23^PTVH+QGR*i~bf^g1N1YI>`S;z$Ou5F{Ps|e7ti9SYV4S^V`rCFL%xnZDe zDO!bi(08o+fRnvSa?L_jFhDM(UW=-MVfR|CTf}WkZcN@*)Q@&dB63Y}vR>bntJK9VY2O4j*v9)fU(u%hbYQ|a*v|VoKOf)%#rM;I4n};L zHZE9DsV}GICWD8gHdD1@xpL_+_+arc_$c&H1d&m0j1F?~h~HjcFRV|rzvqksitE_m zgfztsM8vc&LvehBXG7^W4~c0%Ifo)cgbBDP-OdfCgB*0!(4*2<-+V#kI}*u})cC|C zAHFqYzbU2?Nr5bPOHCvbf)E!HC-w{J9cJn%Lp}Wcr>D~Lsq{889S0c-J;gBm1jA19 zcb#C^9j8wIz_6!)Vec`9^kWPoULJIOZK9Jh<9)NO~2Oi~W)b=Yn@TipD?VSA&4 zOaLD_Y|n3T-&Mx9KouL8TX&!5#)?JkK)RrAb%gn(T`D{M1J{NS_Z@r9Hxl9he8Xu>_9%d>FTX|0nDEc#zdT$kVOW;f!vs&yD~BAK!dxg<@D%k`Y&sjfLDi( z3%xRalU4yq{8oD7rCq0Zqj%5mym{U?r^~~QB^a2N`Fc3ABg3JVVS2V}Mz-&*|0OaC zBi|*y;}6Ne3~4(!hHAMxL3sRcyM1N1a|NWm2aldSe0l&o{}J+fSnlRq-O1K;;1)K# zk!$2}2+|*@O~J6OBTx^`;q-*2?-}HnI5fN6z@ZU^nqk>PN+y4T^|h@^tm%P$L>!-=@NRi%k(=AlerdJ zEHpUG^_g7Ec&1Ur#s2e6ka>mc6foZ-Xk1%W`1eg#`B)u*BH^mcV>uo_>nX+7%zknc z5EfVq?cYVXk}PuwiwP-=cRqYNMN5LBYPC5$uP?BBt1ByN{j!5ny>yxCvnf&uk z=Y-E+*xC8T*KMKSBPTDvA+e%1uCx1zHk)YWRIO*wK|g=IAn`_16cv^2Zl+nFUHh)q N(>%NC61O2M`30?oqMQH# literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/grid_rain.mpy b/lib/adafruit_led_animation/animation/grid_rain.mpy new file mode 100755 index 0000000000000000000000000000000000000000..ce246e76e0b1f735b07fb190200c0b31fbcd7070 GIT binary patch literal 1330 zcmZ{i-A~(A6u_^qAqj~CPHapTLhHl{&;$|)X*5;UR3NO~!ltG`DO;tBvAx7wa3aSH zqDiZrqKd6r)jjSn*lRxc=<8tJp8M2?J?|fACrx|XjrnLbb+Tk1U*B`i@BFUk9pLgL z`I#t-U+7z^fy#=EL`~fk4Yi`B-b6)Rm60y0TC!RP1C%ama%B_vXV15S8}BZWyeI*v zbaFbK%mDY?;_Q4LxNqKBSojo-N@7{sDvO4KRLxMdnrhSmD^P6W$^z06t=ej z*B#6RxbA(UvTeVxpNNL8?%1(FA*r&Z8K56erWK76;LwIBeO1))stj0rBw4RiYrv(6 zn+kBry0{GjRdq)xqsqpYievz)q^QM`0qXtTu`wlZZ>ut{6+uNsQ}ix-w?`v1xKmLtDXkK*<#NcxocHLk%2Wxox!qiu{N$+ zt8fQc_1;{`Fsij{sZ>!lN?RLA+%0u3DK&e3lJlxA;S;@GH%hqk;zABx999x10ypU- zrkrpljUO&@Iyv>|J|801d2{H)#c1x^$J38#voH)fXwqby814y?9JxmKaw7uZE}680 zcG51oFWxik4mmhS$jLcFF3uI|!Ht4i1#ct!+_xW(*(z+As1{)K2+{rDr*dd(NNx<&H&ktHnOccj0GDMRZc$t&@kPVpK z#P_V%S@;}(VTTTyZ1AAT&{=4w*+7@3;PaCX%Cl4Ox8Dyj(nm))>);TB%*E&Uf@EEv z@dky&n7IU+JRtlN?H6VSW(bL}Zh!0^jzr8Q>;vVg<8}-%p#)5^b7`qD!F#E_)pcGw zHBP<5IJONNy!mt&A3)c(E&Kk3SHENb;P5Ex#9|xe`KN>pfuF=|ri&zh`7-WoW zcX$B(6ES#B*0}Wzg~=kOm;h~*51w@Vt{5S}j`b=AtXF@(c%8utFlbb2ERQqZz2Z8* z>nz_mW%Y7lpVN9I5QTW}oB!jK_PZZ9(@E at!(7Djk&P2?l|8^OgRe$_}3X)So#-A0DU3= literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/multicolor_comet.mpy b/lib/adafruit_led_animation/animation/multicolor_comet.mpy new file mode 100755 index 0000000000000000000000000000000000000000..0f2f057344947b494564791a0ae29c745b16bf82 GIT binary patch literal 930 zcmZ`#&r{Pt6y6jlG!)pTAud0JK!1RMWn@ani!;!MK@?{!>R`RZG~Gg+H0dN;m6M_B z4C8q859vYy@#v3(M^B6wZ~h04Ufs4@IOt*DzW4Tf-+u4Q_`&$BZ(A#9MW>5P_83;DRt)VE&%8c`H~%y zKdW=ki5&LtO?cvX^-2bWE=pt2FOA=s10L+o--bQx1oBzPv%5FH0fYJ41mL8;4M|?$ zq>-BLd%g7e&EDS9^}dP8NHo^n6X1J;UOF}%pNdAKiZVSj6=z9eH5!S=552F-bs@f= z%Mpo4w;2Oi|#!tO&D zIEK9^u;(cCsw0=xU&NSN`v3p{ literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/pacman.mpy b/lib/adafruit_led_animation/animation/pacman.mpy new file mode 100755 index 0000000000000000000000000000000000000000..11d28ddf198a579e51d48b115d78b0c1b873d7be GIT binary patch literal 1167 zcmZ`#(Nfz+6kS=dEo>LoE3>Fr0TLh>3!IdIr_A&Lj9g6ckeFhKC!MOYtWYJgq{?Dw zo{$|T)5-J$`WX^VKcJ;={eh6ab*4X1I(_cSChknqyzD)5?!D)pvl|gGxj^m74f(Ns zq&bqVHYC~5nzEyr#_j)*B`ZzY$XU<82;*o?6`=LEQ(*1?w{wGS5G$0|H?{#&C|8Ss z*{H4WfW-aX^_|TkNIa;4o-t(dHB7^nkBN}>ovKS_ z{Rue;B6ZUOTtD+wy4#B@dDD=TXNs;$irKWtK~-uUS(a%#Y6HYOY^-Ie1jYJ++XtN$ zq>`|zEjucR(NTJ7WhF{~ayK8P?!5SHjibI^b5ox$Odh*T!>y!4IOIY)OQo;zG^T4V z48sVFLIw`O7>vV2mPvoahjEyX;0PbZQJ%pJKZJ+)7>@CA9On}_QJV&MYHta^;Uv9G ztmMDDPQ$jCGf1Fa;k=a`l za~a-U&16{C#?X|{!a#^aq14BD;B(`IxY@?9#d`#t{^N7$LW!W~0YceX;E#@+bzedL zr+kO5Rg@n&dFT2qx9mn|O2TY*Yi?(2F_W3wTv#mUGr76V+(I#z5z0a)lk?b#pFNgy ztNzJ;|C+~+U;c8|el336dV8 z<*})gzdbJHv7FIM?f761SM literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/pulse.mpy b/lib/adafruit_led_animation/animation/pulse.mpy new file mode 100755 index 0000000000000000000000000000000000000000..c602e60dde9155da22a1fb274818504405221c4f GIT binary patch literal 680 zcmZ{f%Wl&^7=_2q-Ek7%YD}EA4h<-(L@OdU2(bYob;Y6yR3$6NwI^V3Y|EaIX2sYt zQdda4iCyl?@)o=ePF0{nFsuKZ^Pib-21T&h0VCbir~ceRnhi}&cdVI?EZ5onGkJ46 zfIHq2G`NSqV({SKwVmHJKpm`lfDRx+&<9&(N1s7Z*F5N3t_kR4AL{4@XwEE0vm6AS zz(UJR>L*vEpgo5U^mXL=fbwB>7bu&)z5tSEoj_Z2k6%I~^QM+=C!-ksS&O93;s0DM+bA1F&z<9o!t!B*Ch^GP%W*%j@ zc19ZQg;sbJ4ydW^>IiTSTxhR#dk#TFOEfW2uw-L~+$Q8)ixkQ6(;i^*EUD(i{Lmm` zwY#1_RWSXIADBv9JuLxtO%$2Dcq3R9mhjy>oz>wsZh~~Jc=q8VQ~K7Aa^p{_RQ{Ywl`pA8 zeNCn6FqP<3sP(~kXoLrCsxIS4U2ZesX_Yun_=doweImcARqO;x*&T&;>nCWx!0xv&X}#QW8eo$;Up;=#`#$f_=XGuvToZ_UaChs`}O@LRIkL|1|YWfL}0riJFV_$lgBsEmwE{@kFpvf~*iVH@y@IxZzaN6xVP6c+Hc%buWkb~g121)GAQ2o~ z321SevW==xUH=xz1_;B7UfzP5j%2l_H4Rh&yxfwj2#43SDl!o8ITe7^5rzc*0U7g2 zRcRPb&1Zmx@Bz{rcm)sw3PK%eDpsk)jSRN_n+6+AO;dGe4yEZTPBU6yWG6^AG=#mK zc;pi0f_djg`_uMXyT#O-HQ2{*0QTQk(pKm?+JX#tNwkGvodVy{ypYC#?m>~Utt zUEH_1@dKNqOq&bjZH~5?UE%S^PIM+h z(s3&|PP_gRiDP=f3Qmf|Q`#+p6Z6!3w({JOzaDnaemgwbf6}vGue~@uI(R8%3(t?9 z;nC99bo|Kv+i9dl0%y#U7Q=O-WX4s@milKHr0@R{0tB7tIFxuwKA&{mi;@->cq~Z; zi+d-(QOy4Q5O1TsT_E3$M$NC{z=q3#r?jsV1-)?l;cJmdG1-LteW<~6v1H1W({qVP zVqUmUCro>QAiCkQelmDD?G8lGekDnE_w2N@-y2x3Bx9gDXU>;&FwmD6tlK^4VKnUI z_Yckn-a)Us@3`5!P9+XGuYKeGh`HM!;G2q>D*e6{WJCh*tL+Pr(=k&oS*gS euaJDqY?bhh%k9vVpO2+YGh$oZxW!EOm;4U}d8vs2 literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/rainbowchase.mpy b/lib/adafruit_led_animation/animation/rainbowchase.mpy new file mode 100755 index 0000000000000000000000000000000000000000..dfd1a5a393b240885453dcd0b22f869eb8e29a1c GIT binary patch literal 589 zcmZ{fJ#W)c6o$`rQaeqIHg(b#Aui3Mi&)yZ+%2V;i>q59 zQ2@dpP%_Yobp+DD@UsybuA`e{)5hsM@@yPpP;`s<*qprs${m{o;Vilb?VB5=NY*@Z zgl*j&yiQl379QCOYQVD(uNB<=>TuP${dT$f}j-_{q*m zb741L1*CGciFR)xwG`JGr1G(un^xbxpQ05`l9eU(qIT&ry}j1C)`;NrSE3cVAT86z z6i$1&9!j)DnrKC-dL5D_?!!m=>GPMbn_NF_p6op=2ol{|hgg3ke3$Y`df}{x+RB5D zIobP$_>z2Oh2D+j#aJ#TQZ0oZI{W$Dj5-aTmt=aso1}q!;fGX9=Gl1@zX@r@Z#mDe A(EtDd literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/rainbowcomet.mpy b/lib/adafruit_led_animation/animation/rainbowcomet.mpy new file mode 100755 index 0000000000000000000000000000000000000000..c113bd10451bd5a9d5b539334d6ed89d1ec662be GIT binary patch literal 679 zcmZ`#U2oD*7(Ojf%Ev}&*|7p{eCooKEekBW&_sbdNd|6-)|;-B!&Xz;28x5bLv@Mq z&fnopVN<7<`Xh`#z(24pW|wxWaa`!l`|;#`KF+C9U@1rJN^Pmr8z`ozqP8e$N>?%! zU0c1LdXl2G^aEM%BC}|WKqOeb96|lx%;H~W@rnY1mHMOVV{luRRC%CECK46RL|R`l zM<6Eas@^-;M@R*m|IxcT0sIp;hU=Y8iPucAZz2QaW)Z#9={pf)qElTQ#GUTMcDFv@ zMN?8#=h51pxerFr#a*ez%Tr@uIv?Viuih(%ERHvnAyP%X^#aKz2=)zx+5pbVSpINJ zA80ZHnVEQh!dNS`CUp^@dy2LPsID{wRypVzj33b6wc=X&)eb*T?4~e(cZeCXKqNd# z5|RRDyo`^b3Z8^N>4n~;5Bic6q=cPyz|c{${ueL(&wz1cAkF4(?ylPq=ZV0>8A zswJ`KZo=3p6qTxRG74N5^OC&2YUou>5%Y$+TBvBqG$Ga_qO2En!vvS5r5AzBCS-AAu5Jc1CLqI zYru%L0&=>jnu6*Oxm{GvO2_Xm1UiqRY8A*#PWu{R=D)R)7q8$hNp-OA*pC|16mkS7 zQ-D2ZZ+M7oda5zc1hA*9HFU3N2~nKJEs{uL(MvIcCYB#e0qF`6JVCnz8QY3vhg`dH zE4c01qn?K##L$;X7d^Zq*upq0Cf!TTIAFB9$zm8Cn!@RDQzmxmANO~#33oK+^AC&! zf>%iE7MHlmaok~x={pp@%r8-+HpNo$Hjlmj$zwe3#2YQf^S;IO3oXV=jU}Kp=q7z_ z(tkh>ydeW`$>2MZ{4lcz%YyteyT*p1F>4{2N>8#kvd`F5sw)Z2z;Y{02|^mrb$rGh z!eiosnZ=JjQ=G%vIf~`+`5MKx!u;XmMUi8$V<#kWe|xkPA!QC3o+>H znsPS@OB7^Qq~^ruCuOB3moRWaq?$~dcqDij6BHUGavB7fv>2tCWtha6B14QA1Xu)_ zOqj)30+ShmYIs>X6dKsG7zDY*xCL0mcmlN;gEuHLFp9AnF^X|+NM>qMc*!cj%FD+u yz|o)~B&f=;QIvI)09&H~`(|xM0gf$ZZH$qD$rVyuoO}We+8ebQH%PDtCIbML5L7$> literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/animation/sparkle.mpy b/lib/adafruit_led_animation/animation/sparkle.mpy new file mode 100755 index 0000000000000000000000000000000000000000..45f1022aa287feb5bd70d1d9bac43b8df070303e GIT binary patch literal 1189 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/group.mpy b/lib/adafruit_led_animation/group.mpy new file mode 100755 index 0000000000000000000000000000000000000000..7e4ec0f6ad6f4b0ec1a04307c1f2864421872aa3 GIT binary patch literal 1270 zcmZvZ+i%)d9LJBLgi8o9*gf$eBo5G++(2eel50i-fuhm)x1rrMO~Z0f4ZPc4 zxSCJ>#{#q>Lv@H~**Bg6&eRT&E*sUSNOeF+HFU!Qfjv#vL3qzX=yM{}LUxk~4v`fR ziLy*evB~SoGSNheGYzs^xlWswVIs?EfkVb<@5cUqMp{*Ly{f36fcB`y)R2c|8{t{A2i0TFCJIkgThj(7}+U1;Q=ai#eX5#A|HtI65BDFg>FpSGFWwo813$OyN zr#UzVM&; zSLs8SnUwDbUUb|7wOcBZxO^%S6_)T! zoh_w=Y{q3G(m5uj;T<+kC$@`+;H)cI9my!aB)9T?;ZA`tv^|^XC7)lEG+X^Y}ol-a{B=L8`z|eoz z>2k@^+XOtm7nvd8`^u1n&bsVOzw}apz`HlXvjRSS!-6k5>@3M%x;{j_fPWf6{0N#8 U@Yx8O8$k&HzaBw-IsJft0c!bw)&Kwi literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/helper.mpy b/lib/adafruit_led_animation/helper.mpy new file mode 100755 index 0000000000000000000000000000000000000000..cafbc0eb0bf256c0958e88fb4c6e1de859083945 GIT binary patch literal 1982 zcmaJ>&rjQC82;>pU_wX}$2BR0;t|q7;)Y;MI#ya}NLy68sVQY`R!zY;hPX0kn07%s?J!N#E}M3;9q147bXBYM;_t`%e$Vr~ z&-Z?wae)4dZPQ$iTdq_^C0h`3Sxyp*oFbN_k-ShS3zb-T9UQ^nRvvh+h-*UOZLSQ+ z#%#X2Bnt{~!H*(T0KF=%vIrmRy>du*2rxdL#?1y~Be1*uvTDjX~!?I?;8a1^;U;N(k%QU%n`J9y||OG9bt zmcT2(eQ16sx(3j7Pzz~&wQ(&|8)+LkM>TE_-Xm44$_ka|Rt1VvsDi-3RY?-4MmbbY zScX>QKwEU)Qb9rcDN!m{6-pL9s0tF?lEpg$l`BzFNugki@c9_PZ1GqevyH~$Z8TK9 zBvh!aQkGNt4>iE5Nhtx+vc?q2izkwr@FUjAf%)4SB+E^QDPxJQ8N$jj`vtOOvbZ)fga@2-r!;)(?XNQ^Bv zo#1Q4Xos6t*MaAV$3u8^3LrQW0zOzKizJW(4}QQS+KsEu;MA159tB2ru4@;+5CY~x z19+6z7U$hQdW=;+9EN&~h3s6%o~ipf>hC7U)BNV_r=9`A3agRP!BAv4%)B!j#^VM) z4r};THHf1vR}x6vw)fM6?fTP)JL-Pw5{?q&y`8@j$U{74vdF#thFwsVfG2RKzP-cR zSR^~=iK9RNq7%L!%rP$J34g=ckIPGeWAvE1H5?ot8wd^2 z!9y9vDAA%X>P^&#|x?p=usryj?WxDo4AcWLe6gC*sVx^j_ zk5%vMSnDsd!h5&6@b#>JK4-0mkQS>p`8Dzx;uwyo|ESpVG(dC%ma%K{NNrlT<8Mq& zO`qGc57Qwel{RaCr!Jcz@GJzhr}d`?yfv>M@J)>NXk^Rv{}@M`78$f3#}E)W=YnD65T+zDv35xu3qT2hsHkzQkBy%9mYClcW1Ku2XV^W zRj+Ng2;3zu@eybK9j^n@*@rc_wO)m_^|i;3EU@S>mvQD&44oEGRxq-0+eVx~>T=?? zDDQxI%xva^YyX`CsU4pn{sQE12ipW<=6E*Y1Y{lRURcjM==B9ndBmrz350UoG7f!~S zJSj* z&n&AK#V66=)Y|B0=0{~54F~brR4$LoPec_B;^82i#J@!&G@gt{@2zM3OfuLO(Va%P YeNdeF^<}qS-qaGp4@$D&y*Cy77XUx3@c;k- literal 0 HcmV?d00001 diff --git a/lib/adafruit_led_animation/sequence.mpy b/lib/adafruit_led_animation/sequence.mpy new file mode 100755 index 0000000000000000000000000000000000000000..a1d736fb29fb2b2cdc51488837d8051845acba0c GIT binary patch literal 2148 zcmZuwO-$Qn82%gzgpdZuHebz8O9%-B0!c9;l>RvomsV}p66hbh*v2s>TM}oE!^*0v z4rLNkHK~_LyG`0|+vNkgZrZ86Rnu;}>_?h3X**9^cj&asUgxKk+D36cfA9bEyid|? zXyBYnQnTusS;<*)UeC&EF;`HnoKcLI_4g`zQPX3kP1NNz)ne8tAkX~8x%35e?9Dkb z&Bz-j>V0cjUOclTFP}+Yz9b>OU=$6@DCRV|P)03YAvP(*5-2#=Y_;6zgmB%YUxv0Q zpk_Bzc#(5OOE)*vJmS=fWyo4yS53s%2a*jltD6mvsh4#N3C%pCC~KP#Eo(-hl-DgC zxr=H+M_!16ifD+I3wmKyH_Ip}Hy`6r*=pJmEo&9i)Qc9vwE>{01Jx&&)Jj>; zBChcws}>j=Z1J+1FB>wT&#i4jVq=;LROzi7>l2od&&hz^$lEBKRI}Mv#+OZ9({mdz zc}Q+9=Own}YjEXqrBpIZ3#L0kpS*qNc;NP()2KSy9S^=13-}rgpv_*n#&h!?Yyf{L z4dkga?Ow~}^QfAmRn5w6s6cRa)>G$&E}8m9&Zq#gx}t#gHB;9=fD@7{um*Q|-FP4R znw4TPSGlN}vI^oX#GAT}&oxD#&Y2pBe{s`Vhi(_oNb(C^ z#vl>3ifOe7%L>4n1FMF${+ccWu(}t<*O-l=4-fD>r37q#;o?##`_b=qrq6|4Hr+Bt z^&RMM!7VFQx|MDlbM>|Nx8m0RHr%#CyYcZMgil-%5Z#e*;f^Z;MSJ`mi5Be1Xs-Jb zf1_h(#2&tD52Ul(o!P*4$F_Uhv)u`2dsf-$+-cuweE95Z-IEsfnAU&h=Q4!n zn6?BWe78+_yia)V*M#>yB77IqLij_Agy+H0^N{epQHbh;OMjK{hj$52Ka`dk7k9*F z<_OCssOqz%3u-{g0l3Q-yidR70)!n*QY-TUSnghBgM<%ev}$C~JtW#D9pb`-9cD)e zODA30)~#74BH9%tH5wfu*V+E+pKtU1goW?n=l0LiCBpW}7u-*FNdhV+ojSeVL2=%; zp-PvuK)BH)S^;w)=nIHxds|T;gB#n00W#WFsfUS*_Q&C1I2s}>m!8jP4ss~Rc0U8d zPtth+)!nReuhhehiuNbrNH`ikM_8W(KjYj4v>>cky5L-5ggpes3EK-!&IPV{m?B=A z;@-s|cT}9TKT}3Cp)e!uGG`JlDI=g7SKK5_1!T=j&=V7Oz^M+jjq^fAqpFcv_w0iG z1u$L%%+hggKB?WKC+WCof2j;dhY5?Te?Qr6Q2(ogKH`kV9c|j4*I-v~O?sz9dta$# zJbUtnfLV`Aw7*lp^XfM1#6>=*n1ncEKUS16sKTcKJLfcv*0>nw5`aa!<@bz>_76Zg z3$tC-ZghAA(f$$c1F(@^uOJHcFCjoX0EE|IR{5Ye2G-vo2DogjDdp#;Mf(pW5Dtbw z7`y~~S^^c;Rodf(PS*)ejpC$e|D`}+cmh_+J1cbrTU#p#s2e)TW<*@((p$il!NmCYCO(*uWvSg3T#16{N zF$)kYJ|zy%KcFAPf+ddH2n1c+tE2PMX~POSs|BH&$_grGwj0(^N z<)-TpSC~w|g(6s=d64GRVQ^#p&rISlr^iGe{^sK87C-I7aEF=$8qX&#C&n;tCx+{s z+00{riQx;uxCd)w=CZiQ#DLm>so_}z8r!xv_i~}CFz!1{Oo?!BbU(E9JUR~a=XQXl z4OB|3NSf3g;be@jtt7Q%_h<*OT#$AXn%p+f+x1F8e!m)&h5?3xsui)UEq3Z~h*P~5 zPREz&wQ;sLUInD(#ubD#Wo$_A?oB=h=Z|jYw54n+oe3UPtMzKLdF#z_r3R6npT0Ro z|GJAvvwU0nasDm*)o4a)zBvE=4(dL67O8WWu&i9KLbRBRMV$JC)1PtX3tnj9>|}KJ j1M0@cNX4&|I=| literal 0 HcmV?d00001 diff --git a/lib/adafruit_logging.mpy b/lib/adafruit_logging.mpy new file mode 100755 index 0000000000000000000000000000000000000000..92708d39a4f8d8554caf2de811c6ec9ab073c617 GIT binary patch literal 4700 zcmaJ@TWlLwdOjTSCW@klGvhI1%l4QT-7oZrrY+iOWQvj{OQu9!EXf;}91TYjZIYvs zBgb0V$qcQecG48uK6&?L1?)o$6exzI)3*Y(>;f(JrRbvAxM{it+P>|R7X^YowEfQv z>BvD*2{^a!T>kI-FT-&=I;YVmx`eE-QQFBV>AbwTnJaD%ZSSHEt6WC*@@^S9m0UqW zOi?IES!HKCFCkWx^La^Ba&i&iL{3x?IVF_0gmnPPxor#xdE{1hx8XKK&X;6GhBL@- zuB4?0ic~Bc$Iq^ma*BjcE-EESC?MCxq3BQ;xo0PCP0TJLcXDoNabgL%5)<*|>&Q8s zoSZ|Rm1_&h>Ew0fnpjwvTR`Oa!t~Pg__bN&nG%ZGyi`KerliaQ9T>VBJq7)OB+8{M zV$$D_sY$t15EKP=o-%D{-oZ}h@=|lswIC~k0(_1yvdNu%zPY1?N#~{eQa-&QmyjQe zX}&foh>Bd=MN~m9f)K@=h=>q!SleBQ5Wo~6n{8M~iXcW#1npcKf`U7#RD#Pq9|@%* zmePp_$eAl{$jFtI)^|3M9o|8e>41Hspde3HP$WEXm6cs^2C;|8`$9g4ml2tjHiVtL zQbt;@y-?lhj@-*&2+D(`7BBDUBh6l(pxDAVloKhhNJT~$> zXHB@$Vs~*Iy2+-~zy_yY zI*rJ5x+HDOF!H3+LOyQ}AYOJPAe1(!Y8QO)BBW7T6vQnFap^`BHHo6ZijJ!*?RW6bn-~{vT0{K>X_PFqsVF6-nv!SVTE1L&ruGq29 zZSQX>%62(6JiM7xwszKsM7c2BEMUXenw4xkR}!J3&F?B(Ky}t&Fa#%%t^M5`x4GY; zXKOp2(YChZ$?hT?maxsDqdeisNZ96hTcuzgfvsk-!sx}Y z&H1)wx$HKpp@+?3W}u90t>y@as;vd*s?E{NM4MG8ZI(fZxnh2o>kf5u5DZ-RUU$Rm zxJGeC`g1}_;>tVQ+j0rwkP{S6*~*nUoVY{C))wk%WMVJe7TS9>xEBla*=EO?v)DTw zvU&GnSHnXi8;@e#-Xm@h8e}^+E)=^J?ju~uIYs6K4$?Bq$=E*ZY-IB{{md11$_lqG z!Jcio48`ug#6jq+Lx$Nx$3o!$+jrS?Cs2OW%|UW-MHxDy?3WEK8WGxDz}vk}~%;VZcyRm~~kwWqZ-Htn!SoWX9A;S6A1pe|1(-9pk~ob|&NB@NZ=} zKmOb3zqjAsr@FJ;)A6T$U-W))=8N?&+JYPVj;Efdzu0#i|5sC|36_Aig>8Y>%34*@ z)@M0w@3gVDwW$j#=^&kCYhTN0SEqw@bUImQXDi#frjl*2%iY<=wyiDkh-~+^MOxVQ z8?F_v@|(o?+6~Jc(!=fq5PP5OAW70oQY1|>~r%-Ur?vN04{-R(z1Ru;;xt@>HNLLa^`g1nXboTgcNe zIlaVNNfrj|5^p0ry)2m0xy0MaGu}=Zo>}4@760Y-c~_5qlveT2?8~1&z>J)axnn@q=mh{3oiC;fA_{-Tjn?sE&vwJ##)xyg1Tp z>hkMEqNXj2c=+qYG}Tenezy$s_!+80#RF~o@2wvHm6_O>`p49JdX+j~jaX`wl?g;q zJz^ItLC$mf$)Bj6FTI8tr`eBFDKfZ_>a#75AeIN&MpGiOkB&Z7EgY{ABaw@jE~|eQ z3qr&Qqz5ry6(HE(-+Ao85|_O{Z(R$(yRe@#3DV{eV4w{eV0?>m%h7KM}d}2 zt!26seh9#>uIu4$F1Q*R>Y5y!>Y3E(k<`B=5>+}T4%n;o74ph@mA*<|h4y{&eQ0Ck z??L+k`2not~`I*X#6D)LtW} zZ|U^q#BFGp8&Q;=A;ZM0zjX_^x3Tjn(XRFU%tC^iGwRnI zR&ge!`({((gHxWHc=6keu_jhldDax|-!fdNSEpwa)6g)Z)u=@bbU;sk0P27=(H2p2 zQdH7V__vu1rP(7$nrd~;X@vTp#?A8@F{^%uZ-$p15BT2eeDXi4Gx53Ov(|kFGA!?8 zKPE%$QVNXM&m#-V>zoAw00<<3z??2xEAxMD@$s5NBNh%^{h?5h(wrewJ;6uOS`FMc zLAB7SqgvIskP<8NS5A%Mt(xt?o8bn!8hb};QOnCZvlvCMs`L`G{2a(=4|vn~gHst! zrx%zDy1`PXm)=AzYbjA9y>8%ga6W_4Id~38SbZnXJnK;%iF;$&F_Xd>pwPuGk=<`O zKnSnu9AROTy4doV`&*l7zt*~Pz<2f3$y=|@cqJiTn`|h}RU=pGk&4B9eAVk&g~u;( zJ*aSGZgk;zq>pgSMKQsEuH=_{;%rF z3muO9{u@ebhqCeJ==+)W2IeoPI;*hpb>ap^Flo#;J`JNxtsW)TZg4A<=J`!x_0_cJ zIX$K>S6(OL@%VEom3q}!Ecl&6XtToL3x>>e0s$4qDt-Qw*U|S#6q5g4S%J!c2PZm ztO2krex^9%zGuHw9Zy^Lo$wFe+ANpl_L+V6zH7hD_;(ra`k=(n@0OSi$k0tFF*ztP zcX>N|k9V+n-pPjH`!vkE;LFnnUm-VqjoRVMO z)d^=TtmlmN-RO^X} zTK&8DwOT!5eWf#bC=_t-6X!xt9v78EBE#`~Fz)Z|?(I%opdLc~$?DAAC>p<`)6)1V zu0_m+0L_fTZBd-c3kIe6Blxg@>E9$2ct1UJ;w8-M^vpMj={l3dRxTXHdu!vjsE3IK zfT)KUo1z|?AW)mf)>2_??IEkS>dd`rt-gP$1=F5C!c2xWB6jFk9RN|@YV93t2x9}P z6Jyj5umOx+GBNrGSU<+%CdT{#>&4hj^Su*I><>{fSOBT0!xi{-mz?m2@?p7e$^pOC zibprjtx)i5Yjq8q!33BpEz{d(rbn%7H%9K5<9#Th@(T?1#SV8elnGok0rOOU?C_y^ zs{i;Y6C8*gJ~qLD4sQJuSm_Rf SYkzK{VZB;g1ou|3fBzR0s(hgU literal 0 HcmV?d00001 diff --git a/lib/adafruit_ntp.mpy b/lib/adafruit_ntp.mpy new file mode 100755 index 0000000000000000000000000000000000000000..4e143a4a6409beb53be9bd4f09773b303b8e16c0 GIT binary patch literal 1242 zcmaJLSq4wBq>eQ%$>_rCYN-HaPt zo^TBm%f*UbuOg@*jn}q8uirp=T|&T%sx=uj0*wt{l27szz`amd0)9i*@5nmvYO0O^ zh2Dm0rDDhk1PxVsQ%2CvQtJp@l#0@(3=LUQm9haMKB%ec7U;o|RsnmDD-6JPUa?%( zWy8P#t!Nhl3_L6T6xFF7g#Rr+3~Q>QB2}qM&_G2U%P|0@$afJmwiOA4VO=X1k=$zU zG{kPm$R@2S6&1^Bbq{)`XJKw(rU00g#mr5Zy|Fw!4;ZYkL(HA=U9TYO zRu$~Bb;T9{E4o?(uEFcT-yV>AFqZ?Q-9&4!)Rrn0w_2{hjwHKZ7D7B)qpB(p0un-9 z)>Q0;@!Vly5w0%eUWGGDi8d8{Xd5(X=2S{++6_nJ zC3mfO7j#|QL`XBP#p4@Qv{^6ll3I&*jy^u!xdWN1F5$bdw2d}#6PTCBaNzMJ5<+@1 zolXlvSD(Ol@_3trx9^RrZ(vj^F`1eaUr0=fyMB^$tcOf$c=nZOHd;3G{RB(k)yX&3ojzl1chX?~>iv`b$Z`o=-SfE)Y);DF-`*trOdkyySZ4%HutA zZz^_Pc;0)?*X=hGW_J`nqkOa+%I;fS&w<7D-nTe1Z*c)C5f)Moi=(LIVfe)-__cTR z1B+uGTHFQG;#mCk<)!z$ACMv^nDgr+h2f!iYIG!4om(ECPa5O%_7eYZT|H)D1sRz!#GMtnqm`Een+L65B{;} z3n}9J!-wIWKmL9nJUPM|TF7V%`5{IM#1B6{6Z*In`swi})Yx%5>C?82I8Tm#{_HIN z`7`lfzPNw<<>B#B^W@jBESf%}WAoCEFh~vw=37&-%JQigi|+e9J8LnV2-@;2nmsyA bI(dXK!~3E`YNi9^h+yulhhnq;mnZ!T>(GF+ literal 0 HcmV?d00001 diff --git a/lib/adafruit_pathlib.mpy b/lib/adafruit_pathlib.mpy new file mode 100755 index 0000000000000000000000000000000000000000..32ac9a3d5990094bd826ea6818ae29224b73d66b GIT binary patch literal 2751 zcmaJ?OHdox6@A^}(`pORH0@{b2U=F5D zait|xDKc4v$~LR)vXq4FiIb_6f$>Z}vze+ahSXH0vdAK zyz{Q2b*O#0t}~HLEbAL7Ltal9tLfBI-}*Lcq_6c2^j$}^rt6t3s>$Y%J7;9|#EORU zP5BjS7HmX|H~7FpKc?`|;9U--PwUwHi}@9)3ml4b43V8kSra@q8T zp&{3bW~iG<3Zjj5V zv<8JjAn0WyW5~-{9W^kpx3{R^q~(=#b_wOrpCgA6lS)IQmUE#i-_Giqx}oP%keRZL zXx$c^t|gN4(zc=HP>l}0&%qKjhPDOh=vpSRrXgBiv*OT3c0*l7k~Ca-B*5URy(y9k|fwT2DX{0~$0m-R|_PY7fBu zOoNiM84F2(TU*b>EclsqJ-e>y#x^Q6(^+FxgSPKb)}5ml?rM%4 zVr-n{>{FDNKxshA43e`hBcTI|h+9kLa&RA(0hLS`36vkKy}N1{>$#!+{uStDW2sNg zuJxbMu>YeoK1Nfz3cQ@%Hddiri*Xh^!3EV4{is$L=B>bKjo(bAlWIaw=J-t3;8Sbs zY0V;>mh3~dZTB~F2EUqkrt#WVLN(Icd^Ypm1=V)k-$)xNaNz_0H&F95#7^)4r>4S7 z*dF4azd*%D3{NP$dH!mwbF?!ZE;@^i42kax2v3{wOAhRS-x^#4zqPp5WaNfWh%gsaiJkp>?BT(LyWH$x z9nI&CV-Zs=Yw-gg@pzJW99N4zf14|A_IC<`PZ0Rt4)0ZVt`sERmZDLnK`n7^fe6_< zfq-43KnTPMsK|qI34%pp<+l-EN&Q8d`i$DWTWm;LpQ0KKG zDb^RMU1yOh*6%j#o+~6n=mc1 z_(nWHJh;;U4(mUz6b{)Qk`{Dmn3rmHelnWFN4>^5_ctpz%@u% zi(_?X%Y&~-=BLWlF2C331=|B)PFn~HkBye?5-V!CT6mI%-umEMYw9;P5e5SCUvQE%LH-!3ge&?4&P>>!y zHa}AoZ(yp|+Z&k*2pwJU1tO2Tpc(j1;a0j!GJo~H6>r`||Av076Q5-M`h$}~_2j1mcP{#8%-{IO zeLY_9OyD~E1gZU|GDv7I&0|<61c$YTnk;<{tSelHG{I~$eQOo{9Lvcd%SLk03le04G600eIi zxd$cL{8kCWsm+q$ES#(Pfgx824*m*+I@QnFdZyJyOXlAc-X3fgA=LcVp!xPjoQYR}Q{@wj%RY~5RN5O<;1!Q?<4i+7M8e<6&bXhOkoN8<-Tsaa zA2h*@3j`b;uuovB6pmwaFfO9jj4(fjL1QjJD3)SiA_JrzdQ94zP~Lm}WI-(q_+2B? z-mKDXtL;41VEN-%l<8ENhH`%4MBPyi!tA89Cz(`NUvG))3ZdvUJ1f+3tu~Yv@HO0& fy_TmM4(xWyL2_j=axJc|H&OSbJ&o1i97_2w6Y&~~ literal 0 HcmV?d00001 diff --git a/lib/adafruit_requests.mpy b/lib/adafruit_requests.mpy new file mode 100755 index 0000000000000000000000000000000000000000..657f7d963154253e08cc5465d07b7e15a819c401 GIT binary patch literal 7022 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_rsa/_compat.mpy b/lib/adafruit_rsa/_compat.mpy new file mode 100755 index 0000000000000000000000000000000000000000..526152c483d49353a6ff09c2d42cb38e8397dadd GIT binary patch literal 1000 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 W)z>up_z_g0>hYt`p$--}*#83aV9WIY literal 0 HcmV?d00001 diff --git a/lib/adafruit_rsa/machine_size.mpy b/lib/adafruit_rsa/machine_size.mpy new file mode 100755 index 0000000000000000000000000000000000000000..8d7497ff39e8b6ff5406de623bd688e6ec9eeefb GIT binary patch literal 658 zcmX|-O;g%H9L6_6pi+tn=(Zi5sgux`;lN8067WPPU{qixkM(3daJi;RbU6uV;avj5-n%>H+teeynV@2)qa?P$AJ-*Av+Yl)7g zw+s^_+jxuPy#bi<*#jE{Hu}9b20>@gGt4FkRSgGQS{raz2Euy|Hf^J8+8~&U3vnR> zLLF`I@(~biVh6qHT02N<8%?u=O$X35Kvw}>0`xLife5|E*5x)rfI-N@y)L29N^T34 zS2sZTKgiNGio!LfWWcTD@}=@>0d20WtEgUnQ2;)(-vP6`T}#JEv-B2-qRG$3QO3!< zOD)Ig*-ME;({Nh-S8=`DNle;ED;tvQZNs%(5EGhokR7R3yMUs+=s3f!LbV^R8{Q*hHN?BPEvguFNFLa!Gx#;?z za8>TvRz9jeh(>pd4~rPPwRsxSCCOzxF=~El!2>;wQpjbzW95b3Mg?xNp}*={0>g{{BkV yM(Xo#WSpyON5^Msh2X(=CJ>v_k510i(&2|==H{h1CF1kD6DCN+!Tu?8i_CwpN4IAH literal 0 HcmV?d00001 diff --git a/lib/adafruit_rsa/pem.mpy b/lib/adafruit_rsa/pem.mpy new file mode 100755 index 0000000000000000000000000000000000000000..30e95ab683df2d1fe5a235e33ad5746a29d2b216 GIT binary patch literal 883 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 Pp67=BU|I1b7+n4Ox`?!( zc$?27`bbgwD4R&8!B6e|Sxw}(Xos$M?~0Y()`_^&L2O|&Y`{5PpzO2`m$UFoyVZIb Yef&c|x1U7q_B8l0kAm-u*7i*M3l)jEApigX literal 0 HcmV?d00001 diff --git a/lib/adafruit_rsa/transform.mpy b/lib/adafruit_rsa/transform.mpy new file mode 100755 index 0000000000000000000000000000000000000000..c2b31365fbabb65887cf5726ff1edc0c78a43a66 GIT binary patch literal 1425 zcmah`OHA=Plrw)SQ?%w!67u`MMjn7i>=0%JeC|v zA5(eS1??h}P5*~%Os5ah>44LByU3=n>Ly)h2C`t;D;sDxooaRUedjyhIp-6-;A*5h zreu}%az(S`vZ+L^vZ9;oM!6U%ZGt{uNm1_sziE{#ss*@nWJc2!Q`I!!SB+xP(7`}a zQS+LPWK(+&fq`=%rUbssriB2bnX;x^D2K`*^zVK|#vCQZ0@Tftr5U1+#9jup%V5UvIOxrzcMID3CSY8)SgQg0TY&cN>MPaMV5=+_kdk$2=zox}2Xn}h zH;i&tRtj29FCxt8eN8Yyw*cS&&;-?Mex$2L76Izq}SBe?zjmZ=Y^?8kX`=#*71M$x z#WbO!!_&+mz9}4QYaE+^x?w?V+QToSoMLJB5p1_is4BYK%ph1XQFa;%8t_alV-qNg z->_x3Mb;jefSC$LyPlzYd#IW2h!<-aU2Y}PmV^1Qn2K)V&@t1gDomdRo~SDt?}Z4v zMrG(m1+mjwg@UWhMm-VJ?%13qK zN_W7=`T|{SS9-qJrh4$4KhVSWq!+vITzc_ONlY&icd3i)RUWV~2H4(Im{`3|uoO?Y z50dRqrB=cntJgbNHl=n}LnHp)5gSXQIeM7sa}vbEIH`U%|Aa_Te9(^C!(&T=CUA2h zH6(EFKyFG4Er@iN6DPzaTHs0N@}-kFfgJk}X@MT)JDm34p|nul)sLRVi3FK;ww`|H*azZRO^2-6n#L9WrbjY$ctjr*zp4=#x^$iqe zI2aD0x&6Mp9H3y~ypq_UCZj)^kb7>3Dw-%19x)Pl{->n=95!Ri!C46d8!-OjIcYZpntZ;DvHhFN3Sn zq4EeM)eYJB*>BJ|M*yV0D8=&g8! z-$T?+Dh>{(qe(bNGWiIiVi5t#k;ImmMUPopl~wQt_kT=VhhX4?S*ca(M{0Foo>`&# z7CVN2#c;1ES*;wS&cRr$s;Z6Ft(BD{S*@NN220BE%5Y;=BEuc#j{U)t!rlQIvj6~sH`CEe^>j^x_-tST77@GGZ}paAgupZt7*Zv zzNIUc`x>6h&gc30`T4l7ygRQkR>l^vPM`ByvDItCwt|+K9>ZfAV-HxS$GvuJFU05r z*ZN-qUx-;ghbo0BcuwF6c+!~GnDfx-@SevT1?B?YBnW?)3nRw4ZpF?_$?{CNaohRb z;(g!fBbXQPKEL0$EJTT~KI_|#?Fr&3 z|ApJhG7v5ZHv|jefw%~PAud615SIh=FQ+;;^)mCPAi61b`q!5_=Y1jYFSZ0X&3>SB zSAN#H8TW)|b`$B`)voZRd&4uQvsW0>Wqdux|D2g8EOU*po8Mc0d&OS=Cjb1M&MoNd zRZrm6rlqhYXaE=C@}kZzdIGv1UUcLJK$EuDY5 zZv?g5`Fnu3iU+UHZtLt+&nQf-TmBvJbl!e;?+rgyC_q;?UwV4|vCF%}`?Obgd^Nu> z7V<|&vY8;`>oR_woiUYbI=c|Cg8J9`0lUyMCg`#LcW>`;3(QK7BmGHwptV=(P%e6v c*M6UcoX&c=P^Q#jTy&V%{+M-7uxo?de^X(viU0rr literal 0 HcmV?d00001 diff --git a/lib/adafruit_simplemath.mpy b/lib/adafruit_simplemath.mpy new file mode 100755 index 0000000000000000000000000000000000000000..66f391ec6fbab5b2da08156705081e23fb1bcab3 GIT binary patch literal 411 zcmX|+$xgyh6oxMy5S1x6rVAxe!>~}&V#S!aFaa9l0uzl7aIK}%o7f>84D1@h1JN=) z0e0|D2QmKaDup&roH#B|q67c9Da1>si%hSL3ZN$RtI+!k?T2 zsLK|zWuvVEeu18$n1+P6pE#ylrKqPFrN*A`RmyKl&&V@pQzrP5R@iSy^)Va s)6sDL9ZiQ{(NyVOpYE^;;?VXp#c~jSNKKf6=|Nbff-0rJG)%4e7d1GC@c;k- literal 0 HcmV?d00001 diff --git a/lib/adafruit_ssd1306.mpy b/lib/adafruit_ssd1306.mpy new file mode 100755 index 0000000000000000000000000000000000000000..9c7a63488d4aa2c3f1eaa82d22fa0e7798c29b2e GIT binary patch literal 2808 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 literal 0 HcmV?d00001 diff --git a/lib/asyncio/core.mpy b/lib/asyncio/core.mpy new file mode 100755 index 0000000000000000000000000000000000000000..f67026fc3968727211fd6763d7a7f0f3c949cc8e GIT binary patch literal 3312 zcmaJ?U2NOd6~2=H7)6n(E18lL)uCnCaummLXvS%?v{5D5vFs!^<)73|Gm0i@OSMcY z5|ua@)>5v4+ARjCdsw%p?qR@yzD$x8Zv%$?Bx(9IU|4~ndsw>HJq*RLJ`X#Wtdn3Z zrk~4ue(yQoIrlKxiB1;V`=s(cP0s6QWxb@17Vn{McUdi{vVl6w_sR$xd3mEON{WK~ z_EyQSt)Y;lNNc4^-ViM&qHWn`8TA!QdCd^jEmyVjy&W!x3q}dn>uvNJy2Fu zTiIXHo~rvTmI%Nph_Ux~OL@R(+u_PvhcN`eHRw$O`u3S>cdSgZJZ!J0SOf|0DHXGz z_=XavsB2QC@NM=kyOFQGnoQfSWL-1VEd$YjnT?mJF0TdiYKW}98@q9L{0VgWp0g15a@w|&ks>dY(P@J067{koV^Hx|Hl**Uph0#uQFC z87Hi5Oq)r!(;YGAiOx_v(;n(zI#x`&E9L;Yi@CZo?J;Qzs3ReYp;l(-mFn}Psf*VBx(UbAFLp zSy|)|?eWg>ZH#A;bI{%1dDwQ(IBqR+PMWqTdZcXt(cV>o#_;#8282bfjrQ|S#_#p> zDCSrgZ)bvB2XkVP>!f>t-{bAE`CUwCk)vn^cno)hd4Y2=eF8B!%Jg$?W`sM&oDl*U zA+WH>dFTMB1xz#MTo~_WMmd@}YZG1|Ff+#am~-B9JX#TCe-$ChvwN2HE;38BhglY6 z!s*`SZBF+ghu*yyw{&R2*^VIEznfNA_*z^)v&)LIk;{0|#%sX0Dpl=(z^5NnXLn2OPXZ#qIbikMN3F=bgN>5$tWq z)vH_J%K+)CTsxD1 z_DFJ_%%C85RbRB={pl&}^uIU(;J!2hOGJ=&v$O2QT>ee-XCp&{vDag>Ew@YpOX@ml zU)YljTjnwmU$Vs2=fqW8T(yl-^DQE@B59IHWXo5|I`x$%Ie?Vo8VSN8FA?&qw*cW6 zd#M+0n*YFW)Uk_qrV@1-_tl}j-$DKUzG3srZ2VL-HjHo8>65$@?#XutoaCOk>R99v z@B9M^mK38Qe@OqUP3xD;|HRp7G#(Czqsj59fy8EXAQ2hZ$VTqW3=W)%gr~w+hSI|k zB|JJC*bL3!mCKse zo#;GMlLUDug<^ppzZp*|S$GdpJ1%%q|le&OAjz5G@HH)d>c7+zSn(Pul>SSoook#SsZ|A z4zk=2O^16_U90^%jsx;EqR!TSM|N9>{Kr{*mPc|mPPxZwe~b@BaR#b!1+NdZk)F@U k+pp2gx!PaMuK3i{0Ceq99tEwm924d!4nLIjEMw4#M@6jAnKEL8sBpd<}|7W=jegsg+*fTneKgqM&z!aO|z< zio)S%Fp5UgcaTRR4rv6NGQv?(bPJOW!|xdT#5yabU_jLo|ynxLiL?hb}a)I*Gv}LrqdFcGpOK9{Fnj{4&NGrfRWA h-)_CW)DmO!Eq#&`llCu2lcgu~h6|?Yf;a4U$REUiTuuN0 literal 0 HcmV?d00001 diff --git a/lib/asyncio/funcs.mpy b/lib/asyncio/funcs.mpy new file mode 100755 index 0000000000000000000000000000000000000000..c805f0942934950ec493be3462af2fba71b5c6e1 GIT binary patch literal 1147 zcmYk4OLN**7>19;MZzXF7DOS5>rk)+hQ!Vg%F69fBx)eGYvH&K&14ki_}C@^L?n?k z?V^&$o!-{n_a}hCX}fa`&Z4`vi*(ux^n^2!`JqMFCR5b)#V|pE-7MPGLsG&YZAgUpwtukpg?JAUAXnZ~*PdzoQttNCRWKfi-|%Zlb3+-7D-7^p@I0fOXX5 zCvDV5fNr(*T@YHV*K`A_jn;d>Z_DBXZsi#eCXCUIVBy9)dvn&NCF~&UUD5#KZam_# zmx~*bvm5uP!(qaltnUZDP44@@rmO&&B(A!qNtUdp0ZUDhL3ff^zeTYAG|4h|(yo9f zL$aRr>tHS5eR#{wh9v0uBK+I2X_~n!)LS!VFq&A2rj~YcMSnL$XMwbPTp5(vP3GEb z@xx)sBOUh#k~B=X@0W@DouE%T6)T<4SQd!488S59JIIoquup>D1pXS>qBs3B5w|&O zjwQI=wfuZ}zQ9Kd+mHDKp1#n@5=ULEQ0$DZg19)rPz)KI>}1F+F(_U*=w^sfvszx< z#GUciqCPCm^@9O%2|vt@{QJ_$p)Jz0F{*uZSUD9xz%6S79-{wPN8R3;78aU9RwOyW z%tXvplVbdxF0KVLE@&;%Ue8z6skhl^z{AF-X44=;uwe-jIUgNPn)f95-Sj`dm`6vs zS47BbDi0pSgfB1gu~dmqEUk!-p70NOK6*15t>a28xzb9O^~fv)6x|hs6o8!{evAOu zahkxZ4a_*jaJ>v+=7;9yu-D%RUc~sT2RI5}#?ZC&xGo-N00io!e z{1s0uF^L$aMAn(dl6OJ z6f>70#gbFQytxtR_ZXC;M1iAF50d+Le{x4Jr&6ipb+aCMl;cYUUd(eO-q>^cyO@_C z-g%Yb`;GyHew@fJbArj-I6`L_RO`)})JiG@%; G4gUp6FG^_u literal 0 HcmV?d00001 diff --git a/lib/asyncio/lock.mpy b/lib/asyncio/lock.mpy new file mode 100755 index 0000000000000000000000000000000000000000..905ca20449844d284d0269d31fc1fbf3e522ca07 GIT binary patch literal 597 zcmXwz(QndF7{$Mq!b-(bN_T}0H{zz-FuK{y#z!)0+{j*PmMA8q)Y}^&kOHOXc)Oh> z`s#n-V}10^8Q*PP(S#Cco4pW0kpkShFFm$S&@el)OnFHq&x0xyDPaiWHMR={0wEPa7dOZ=4tU#x@)YBrVIv zEgPKIToibp4V7;jD#L7{bG({%@u$7-KPjcndqtDBdi9gD{o}(%d*?xWhjH}A`AvCW zWmS!}nC7ZdIw`WRbQ_Ga4Q{{F-hah>D!0fAK&?X6^1K?XK$hFUQcF(f|Me literal 0 HcmV?d00001 diff --git a/lib/asyncio/stream.mpy b/lib/asyncio/stream.mpy new file mode 100755 index 0000000000000000000000000000000000000000..ebf96b71098f25e8dd31509089a01f378a46a412 GIT binary patch literal 2203 zcmZ`&+f&=v9X=AqIF3VvrPaEGWL*rt0fq>prI&OaUlJKeK)#f5rWsk5Pl7kbawU<3 z?sSnErxSMep?&B-(7v>9zJOu#(n3f`JAGF$>!9|B8D-aC0vgQ_WWufvADu8|@Ry0AX$|@`a zmuODV_(-W}5V)-op@1uL9o7U%uGOHVRpc6Qsj~C{YJg6qZ?9!mZ)Q^2EO2c>MXAYv zz7I9ATvjTzduWkeO)Lx9Tqbq>7NAwAm8$5|O6@)v?&ATc^_g8&tANU8R}ykfgO4@f zN65L=#OjKWTgeKEm2~QM4pCOby3j9wMKyH@8?vg^#7zhyWm(t|Yh`sqd;kUcOU}S8 zRAk|YTW|{k+8l(wNI?)y69nKs!>I*Ylsx$VCYEYfG4{uWK#KT>UuJn z0gh6ohMcQbR1MYuEg{1-C}^Vk0Jtn9;4oK&T7|GKY^q=^A=V^Vt-^9jQDgWlfI~1WZ)rkl>mC?G?h42rMHEbf8y6cNP?jWAy$l*Zri~Fk z7A38^4H`QXk_eHbiXb2x(EKs#xd5C{s>T;a8p*cA6DQa&{)SG0=x!N1S%o+$2U~ z^mW2U$ESgT1?VXTqh}eMo?`}RJ7c4-GK2IyW2d9c5WT=S=n!*`4)c<;vGz-hnBt~q z^wEilcFQx}X?bRRpyi41(&N$LS?;#(EqYtzOgk^d&N=2dJ-|zi#h?9F*Y%jo&gs*} z=`=ORf&wq?a=$PShOcs~`a+R$8{-^7#;oWvh}eUax~{<+lxG^R;5%z)O{|~vqf|GXV&2cArv%Qo5=+k7pEyXEbYJ%`+ z2&t$Qy{S-W+#hI>k%VX{4I%a?9rvwv6hpUpsblcD+3xTWJb&C;CnN1QcMPYWaK|PM zPngp`EC$EpOvFFqUO_lf>{vgEzi$#6{a+(P77~kDLX(C(tJ+@@7y3>7cm-{ z&P0-YTmQK}lv<9=2F7!NW#42fHMiqxKL;>jJaME_Nn1kTi+)yvNk>c za-TZi)APMXzPFoa2hI*DVvWTL-1$Rlq_>kt)1^!6?$qbW+^e+nh;$#kPR5TQ&%X*f z?k-_>JIT#X=CkB&RD=B8ClvJw`4%#zn~1lbcPRRhc)Lq@*4QTY1+Lq67{z{X2|oNX zH_x7hacQ>)VSpimn6A20dV(U$-7)V}i2L?y$I?KSsG=!HYif0d;wwys}Te z(_jZsc`te)CXa7+(cm78f|o|U9_2e|xk+|_#d@9zjzD{p`hQ)y+;=5+mUi~~9XNzv zXy{4JjiXZ|%%edry|nz(%VGbdKNRTbuM?^6&gJx$K9PzlQ+yq_q^TdbpL5S OHuEhOT2%Ne-Tn`ft(n*W literal 0 HcmV?d00001 diff --git a/lib/asyncio/task.mpy b/lib/asyncio/task.mpy new file mode 100755 index 0000000000000000000000000000000000000000..466dce0ab1239f5853163f24e1d389307e6aa550 GIT binary patch literal 1403 zcmZ`&OK;;;6ux$o)_Jsbu8r$vN*i3~QTH`X%?KeOD#uMh3`0FFNF$AuS~s^%)J&2| zT%bFrji4-G&7K7dHg+=AtdOQH^9yDHtNa#@ok2)QSUUH9K9BF7?;g7}iI%pRMZ0_6 zB=y#&V|PzC+UIDNBdrca6ZjAu))_schzlT^Y1b;xXrqcmr%q10m1_O?7$w1ZO3x7w zJE_$nn*Ik>8g|zStD5v%2j#%ush`xGXRWSNY1~k2?Qao z+GJowk|%RC%sZ{JDM6FJLb=HY2z4OKIPMliyN8#e4p>H{*dnRtj64%SYRdgNfAkt zMMjz~veL|9ae|NNtQ0vcM))Xzs70dRe^A_*RF>VjtddnWm-FSEs;Wj#&8w>%M|>gXg*fI32}u0} z+;K=r`otpr!q(!n>fTorMOAZP`E~2YsCl=L`^p+Xoi%!6THamwK9m!9axm1{TRiCx zboM5QmatELEPVKAhR?b?Sye47%9^>6Qx#|)ILoTC7J{s)su1?Qk@*OkzJ(5BczU2S z#J@Alp^&%(3;6V*ki7GULTqFnK=aV@LtjV?1TdpM69i@xgAYY zi=n7e2@4biSfdbu1aT1Db!lLfVao43K)%euHAB75hJ+V8^Sq?F=PGc3_vYVXJPnjO z6J)_{_@tLn;&a-n>*5(m^xxKB>fA!~>N|JpD&C(q`?J-fP*PMXgi^+`(y6qx0^jKZ z$XWzhOCal#|Ak4E4&3OhQG43g^K|BIh{4X1R&0Na1I=k5pjTw`rAKo XJSzAZ|1!S{!~ad(0q=XkRgu2|()y1O literal 0 HcmV?d00001 diff --git a/lib/asyncio/traceback.mpy b/lib/asyncio/traceback.mpy new file mode 100755 index 0000000000000000000000000000000000000000..e18e5a7eb1f66c38392c873e3d8dd6b17f700d79 GIT binary patch literal 649 zcmYL_UvJV-7{*UaVTi0Nr&v_jYzi~Lh$KRGvBbpCvJt{!nz>9a40c^Hjin`R6Cs3H z2#H?!VG0cN%4p`M_gp2gz61kT{~YUn5u{VDME zD)!V7;{-#95rXz-@q+?j0;0H3#6baLC{e~=vws{c9k>x89k`h-b6m=M_fx5@vG_xH z1Q|#qK@k_qkf2vSIcKGwO9wx@^tJO-I&?9ouYZ}-;jb{3#G9zHGpC6fclB&(HZ9jLrVx VN{28;(a}}7J}YAL?JE~i{tKH>!UzBW literal 0 HcmV?d00001 diff --git a/lib/bitmapfont.mpy b/lib/bitmapfont.mpy new file mode 100755 index 0000000000000000000000000000000000000000..c77bceba07f4ae64886562e93b670a8de7605d81 GIT binary patch literal 1489 zcmZ`(OK%cU6uxJGX$Sfujg+=9Epfnitu(Zn7$2mXXky~VM1#qlDO`jI0}g}Im4it) zCjJ3`#q?qI7qo8O*hLqv+!{%LfSx-u2%`}ebGY|BzQ-9J1cZfk5eR-FIWi8~=|^=! ze%%}+RA^BsK{pL79YTVf1>vQEJ!Njq#1D zS=XB7hHfr3H%Hnn(`XmX{xfo~-fS4=9m8lCqW>zKcM9)f;ZR86vB1&sQRDC~@^*@; zY!Sa(7$DO5MWQV5OGP0wZVHgb0kq(THv=olYaaZ98)ccI-?HcJ0gz z?Ae((SGzye4_u^9+Ywq})n^q`q|IuF)xwm|a3~QHY_VF|oi4grAty=tlaogjxDer4 z)VnJ$BZkC0*vUA=5@@!anS+D`atLAzcsd92BD^U>S$Kk1Nw70A!gI9nLkl*VOdmob z7#kr6SAR3aw%*i=&xL&6Jr5d8D@9!B4y!RYc0qeY5&;LRl;T)VBUA^`7Acc#wBVWH z$Kf^)6>E(a^P0@LO~Mmg_RJaHMV@^)5k-dg_r@zc-lkF`n5mS z@MW&+jf*H~;*iVY@IA2QG;HsucJ{eS-QG!W7x@N;_~N?rH`-4yP-FUl{4fn~wo}8W b%OOJWA5Mz$>Fa-nd(#T;tNL&A|F!%L(JaWp literal 0 HcmV?d00001 diff --git a/lib/neopixel.mpy b/lib/neopixel.mpy new file mode 100755 index 0000000000000000000000000000000000000000..314713a20cc2266b821f37eb95e071238e787721 GIT binary patch literal 1315 zcmY*X-BTJ@6hF(igzDw8UQwtaq8O2Y5+qh>qOin|S^*2SOq*F@S!Jil?kr1`w}td0 zeaKt;*3RUi51l?i`eE%``jWO!ea&>H{U7od^n%(>XLrs$ANQQ|yT5Z%7P!7?B6U$# zq*JjLR$4G(X|x(JRjQN@)uyEJgFv}?2==mEQY(Nf(vhTmj7S&-|RD%WbF3XXXAc6f0aEPESC zux#ul!A7-xuu*j%(5@(F`yc@gjwFR-DJu%FWmP(=YIU*E0JhZBdK{4+H``$&~-`s1|~_iDnwz>bnJUGsCb9EHvWVY2 z!*^o_E*pij81pL{XD5D&GcS^Bxt`mD4KA1yU z{dS)F>-Y22c0cSl4jf!%(~ZsS_47DGi}YL`)`xEV9PdDpvWC|#S;Oly&>MAshem%u zQ)h_$82^MR_S2sA)BM=%ns&|fTz+?eQrBKsx7}XVPv)V^zcut6qh2AxCYOZH={TNE z=udpJftxd3_NE?Zid}Xt4#lp^&(01`54YK+82Uy|SR1kh6Z#ijp^d&V4bLZ%DNg^Y zdl_tVbGA@Ie~NCQFgp>2Zj6aDuTbO_1+Y8-@N@vc{v2=gVhlwP6RJ-8LPG!g0H^6~ g;nZngOz7VpTwuu2E>res;=bO+77C~rGf)Ws0F+{F7ytkO literal 0 HcmV?d00001 diff --git a/lib/neopixel_spi.mpy b/lib/neopixel_spi.mpy new file mode 100755 index 0000000000000000000000000000000000000000..c5a84352e96e745ee581ab638d4f636e2897502c GIT binary patch literal 1234 zcmYjO-BTJ@6h8|}7J_=&U2jlP5e$9;N`V++tpY}4S}P`&GL5scu*l9JY?mdLzGT6C z(3#HktQ zBB{L2Ayjg}5O-X>D`iBO|IbUJ`Kzh}X1tR*bG{-Hm!VBuAztO63!m8_B`lyrMCVC8iN=x$r>KIyXb zsR)cvRmE3o)~qNMB^BtLR45R4zO)Zl3?D(qv=a>5U?>7ZsME#r9trAy4NJR@{?wk|7Goc1IJxT32HM{G>t(fQC(d?*GKRc@)4H=LTbxaxuIvoaVa2T=C(SbWs z8Zu2%0~Z`7Y)Y+JlD5E$cr3L>ZEJ}E8q*pw6R*W##^w~dh~IJp4k9bIqAuKpx^Xw^ z!9BMFfRK%5Z9yYOi467dj&lq(LfYW&PQ|&eIkSt|#)bQ4u!V3KA$;Z5G#nsCa8rmC zHW4QzP_N)Rc=$UYEVvEmlHjT>B0ITd)F(7YfWrL&3VQ+uJYky)7=sk{20E}W(24!c zjOla7&tGcV>O%k3$Tcs+a=rMHy-!QK*F6)S{OD+Q+7sOy4;M~i>&FLw#^X#^G|Kcm zi*7UXCqe2d^Y#g|5H!Ts13=7Q(E#W8Axu5{u4NzmzGWZ!wq+k?%!kPNI9R7z_K_Al zvVwnGHT}rq=WEs^^UjO-a_aGOGOom(ZDvuMqL`(hTI}$7%Y7qGzvaxhZJ!H_cC&?$(x{i-t0_xjw5WqG`^t zCO4*qsZ^6254SUF@d7mH)LCg*Rp$w_EzR+