From 0a24e9fa8cb7da93954c91bbd6a50b915907dfcd Mon Sep 17 00:00:00 2001 From: Chris Matthieu Date: Tue, 24 Feb 2026 13:40:21 -0700 Subject: [PATCH 01/17] added support for RealSense stereo cameras --- README.md | 27 +++++++ docker/docker-compose.yml | 4 +- .../skills/take-photo/SKILL.md | 20 ++++- .../src/context/robot-context.ts | 1 + .../openclaw-plugin/src/tools/ros2-camera.ts | 73 ++++++++++++++++--- 5 files changed, 111 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a6125cc..369294a 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,33 @@ docker compose up This starts ROS2 + rosbridge + Gazebo. Then configure your OpenClaw instance to use the RosClaw plugin with `ws://localhost:9090`. +### Run without ROS installed (Docker + OpenClaw on your machine) + +If you don’t have ROS on your host (e.g. macOS with only OpenClaw and Docker): + +1. **Start the simulation in Docker** (from the repo root): + ```bash + cd docker + docker compose up ros2 + ``` + This runs ROS2, rosbridge, and Gazebo in a container and exposes rosbridge at `localhost:9090`. + +2. **Build the RosClaw plugin** (in the repo root): + ```bash + pnpm install + pnpm build + ``` + +3. **Install the plugin into OpenClaw** from the local path: + ```bash + openclaw plugins install -l ./extensions/openclaw-plugin + ``` + Use the path to your cloned `rosclaw` repo (e.g. `/Users/you/Projects/rosclaw/extensions/openclaw-plugin` if needed). + +4. **Configure the plugin** in OpenClaw with rosbridge URL **`ws://localhost:9090`** (this is the default). + +5. Start OpenClaw and use your configured messaging channel; the plugin will talk to the simulation in Docker over WebSocket. + ### Try It Send a message to your robot: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 6a3c8e0..7935201 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -4,8 +4,8 @@ services: # ROS2 + rosbridge_server + Gazebo simulation ros2: build: - context: . - dockerfile: Dockerfile.ros2 + context: .. + dockerfile: docker/Dockerfile.ros2 image: rosclaw/ros2:latest ports: - "9090:9090" # rosbridge WebSocket diff --git a/extensions/openclaw-plugin/skills/take-photo/SKILL.md b/extensions/openclaw-plugin/skills/take-photo/SKILL.md index c06ff81..b8373b8 100644 --- a/extensions/openclaw-plugin/skills/take-photo/SKILL.md +++ b/extensions/openclaw-plugin/skills/take-photo/SKILL.md @@ -13,15 +13,31 @@ Use this skill when the user wants to see what the robot sees: 1. **Capture image**: Use `ros2_camera_snapshot` to grab a frame from the camera topic. 2. **Return the image**: The tool returns the image data which will be displayed inline in the chat. -## Example +## Examples +**Default / compressed:** ``` Tool: ros2_camera_snapshot Topic: /camera/image_raw/compressed ``` +**RealSense color (raw Image):** +``` +Tool: ros2_camera_snapshot +Topic: /camera/camera/color/image_raw +message_type: Image +``` + +**RealSense depth (raw Image):** +``` +Tool: ros2_camera_snapshot +Topic: /camera/camera/depth/image_rect_raw +message_type: Image +``` + ## Tips -- Default camera topic is `/camera/image_raw/compressed`. Use `ros2_list_topics` to find other camera topics if the default isn't available. +- Default camera topic is `/camera/image_raw/compressed` (CompressedImage). Use `ros2_list_topics` to find other camera topics if the default isn't available. +- For **RealSense** (realsense-ros): use topic `/camera/camera/color/image_raw` with `message_type: Image` for RGB, or `/camera/camera/color/image_raw/compressed` with default for compressed. Depth: `/camera/camera/depth/image_rect_raw` with `message_type: Image`. - If the user asks about a specific direction, note that you can only show what the robot's camera is currently pointed at. - For multiple cameras, ask which one the user wants to see. diff --git a/extensions/openclaw-plugin/src/context/robot-context.ts b/extensions/openclaw-plugin/src/context/robot-context.ts index b7ce1e5..68becc3 100644 --- a/extensions/openclaw-plugin/src/context/robot-context.ts +++ b/extensions/openclaw-plugin/src/context/robot-context.ts @@ -177,6 +177,7 @@ You are connected to a ROS2 robot named "${name}". You can control it using the - \`${prefix}scan\` (sensor_msgs/msg/LaserScan) — LIDAR scan - \`${prefix}camera/image_raw/compressed\` (sensor_msgs/msg/CompressedImage) — Camera feed - \`${prefix}battery_state\` (sensor_msgs/msg/BatteryState) — Battery status +- RealSense (if present): \`/camera/camera/color/image_raw\` (Image), \`/camera/camera/color/image_raw/compressed\` (CompressedImage), \`/camera/camera/depth/image_rect_raw\` (depth). Use \`ros2_camera_snapshot\` with message_type \`Image\` for raw or \`CompressedImage\` for compressed. ### Safety Limits - Maximum linear velocity: 1.0 m/s diff --git a/extensions/openclaw-plugin/src/tools/ros2-camera.ts b/extensions/openclaw-plugin/src/tools/ros2-camera.ts index 202178e..9d8a641 100644 --- a/extensions/openclaw-plugin/src/tools/ros2-camera.ts +++ b/extensions/openclaw-plugin/src/tools/ros2-camera.ts @@ -2,9 +2,32 @@ import { Type } from "@sinclair/typebox"; import type { OpenClawPluginApi } from "../plugin-api.js"; import { getTransport } from "../service.js"; +/** Known camera topic patterns for common setups (e.g. RealSense). */ +export const REALSENSE_CAMERA_TOPICS = { + color_compressed: "/camera/camera/color/image_raw/compressed", + color_raw: "/camera/camera/color/image_raw", + depth_raw: "/camera/camera/depth/image_rect_raw", + aligned_depth: "/camera/camera/aligned_depth_to_color/image_raw", +} as const; + +const COMPRESSED_IMAGE_TYPE = "sensor_msgs/msg/CompressedImage"; +const IMAGE_TYPE = "sensor_msgs/msg/Image"; + +/** Convert sensor_msgs/Image data (byte array) to base64. */ +function imageDataToBase64(data: unknown): string { + if (typeof data === "string") return data; + if (Array.isArray(data)) { + const bytes = new Uint8Array(data.length); + for (let i = 0; i < data.length; i++) bytes[i] = Number(data[i]) & 0xff; + return Buffer.from(bytes).toString("base64"); + } + throw new Error("Image data must be string (base64) or array of bytes"); +} + /** * Register the ros2_camera_snapshot tool with the AI agent. - * Grabs a single frame from a camera topic. + * Grabs a single frame from a ROS2 camera topic. + * Supports CompressedImage (default) and raw Image (e.g. RealSense color/depth). */ export function registerCameraTool(api: OpenClawPluginApi): void { api.registerTool({ @@ -12,30 +35,60 @@ export function registerCameraTool(api: OpenClawPluginApi): void { label: "ROS2 Camera Snapshot", description: "Capture a single image from a ROS2 camera topic. Returns the image as base64-encoded data. " + - "Use this when the user asks what the robot sees or requests a photo.", + "Use this when the user asks what the robot sees or requests a photo. " + + "Supports sensor_msgs/CompressedImage (e.g. /camera/image_raw/compressed) and sensor_msgs/Image (e.g. RealSense: /camera/camera/color/image_raw or /camera/camera/depth/image_rect_raw).", parameters: Type.Object({ - topic: Type.Optional(Type.String({ description: "The camera image topic (default: '/camera/image_raw/compressed')" })), + topic: Type.Optional( + Type.String({ + description: + "Camera image topic. Examples: '/camera/image_raw/compressed', RealSense color '/camera/camera/color/image_raw', RealSense depth '/camera/camera/depth/image_rect_raw'. Default: '/camera/image_raw/compressed'.", + }), + ), + message_type: Type.Optional( + Type.Union([ + Type.Literal("CompressedImage"), + Type.Literal("Image"), + ], { + description: + "Message type: 'CompressedImage' for JPEG/PNG topics (default), 'Image' for raw sensor_msgs/Image (e.g. RealSense color/depth).", + }), + ), timeout: Type.Optional(Type.Number({ description: "Timeout in milliseconds (default: 10000)" })), }), async execute(_toolCallId, params) { const topic = (params["topic"] as string | undefined) ?? "/camera/image_raw/compressed"; + const messageType = (params["message_type"] as "CompressedImage" | "Image" | undefined) ?? "CompressedImage"; const timeout = (params["timeout"] as number | undefined) ?? 10000; const transport = getTransport(); + const type = messageType === "Image" ? IMAGE_TYPE : COMPRESSED_IMAGE_TYPE; const result = await new Promise>((resolve, reject) => { const subscription = transport.subscribe( - { topic, type: "sensor_msgs/msg/CompressedImage" }, + { topic, type }, (msg: Record) => { clearTimeout(timer); subscription.unsubscribe(); - resolve({ - success: true, - topic, - format: msg["format"] ?? "jpeg", - data: msg["data"] ?? "", - }); + if (messageType === "Image") { + const data = msg["data"]; + const encoding = (msg["encoding"] as string) ?? "rgb8"; + resolve({ + success: true, + topic, + format: encoding, + data: imageDataToBase64(data), + width: msg["width"], + height: msg["height"], + }); + } else { + resolve({ + success: true, + topic, + format: msg["format"] ?? "jpeg", + data: msg["data"] ?? "", + }); + } }, ); const timer = setTimeout(() => { From ba310733cfcbfdb9cfe0493d07c0295abcd18220 Mon Sep 17 00:00:00 2001 From: Chris Matthieu Date: Wed, 25 Feb 2026 12:33:06 -0700 Subject: [PATCH 02/17] setup rosclaw on robot already running ros2 and added namespacing to cmd_vel topic --- README.md | 6 + docs/robot-setup.md | 245 + extensions/openclaw-canvas/package.json | 2 +- .../openclaw-plugin/openclaw.plugin.json | 5 + extensions/openclaw-plugin/package-lock.json | 851 ++ extensions/openclaw-plugin/package.json | 2 +- .../src/context/robot-context.ts | 15 + package-lock.json | 17 + package.json | 2 +- ros2_ws/src/rosapi | 1 + ros2_ws/src/rosapi_msgs | 1 + ros2_ws/src/rosbridge_library | 1 + ros2_ws/src/rosbridge_msgs | 1 + ros2_ws/src/rosbridge_server | 1 + ros2_ws/src/rosbridge_suite | 1 + ros2_ws/src/rosbridge_suite_repo | 1 + ros2_ws/venv_rosbridge/bin/Activate.ps1 | 247 + ros2_ws/venv_rosbridge/bin/activate | 70 + ros2_ws/venv_rosbridge/bin/activate.csh | 27 + ros2_ws/venv_rosbridge/bin/activate.fish | 69 + ros2_ws/venv_rosbridge/bin/cbor2 | 8 + ros2_ws/venv_rosbridge/bin/pip | 8 + ros2_ws/venv_rosbridge/bin/pip3 | 8 + ros2_ws/venv_rosbridge/bin/pip3.12 | 8 + ros2_ws/venv_rosbridge/bin/python | 1 + ros2_ws/venv_rosbridge/bin/python3 | 1 + ros2_ws/venv_rosbridge/bin/python3.12 | 1 + .../_cbor2.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 909368 bytes .../bson-0.5.10.dist-info/INSTALLER | 1 + .../bson-0.5.10.dist-info/METADATA | 30 + .../bson-0.5.10.dist-info/RECORD | 18 + .../bson-0.5.10.dist-info/REQUESTED | 0 .../site-packages/bson-0.5.10.dist-info/WHEEL | 5 + .../bson-0.5.10.dist-info/top_level.txt | 1 + .../python3.12/site-packages/bson/__init__.py | 1486 +++ .../_cbson.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 336496 bytes .../_cbson.cpython-311-x86_64-linux-gnu.so | Bin 0 -> 340536 bytes .../_cbson.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 370552 bytes .../_cbson.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 334400 bytes .../site-packages/bson/_cbsonmodule.c | 3272 +++++++ .../site-packages/bson/_cbsonmodule.h | 181 + .../python3.12/site-packages/bson/_helpers.py | 43 + .../python3.12/site-packages/bson/binary.py | 665 ++ .../site-packages/bson/bson-endian.h | 233 + .../python3.12/site-packages/bson/buffer.c | 157 + .../python3.12/site-packages/bson/buffer.h | 51 + .../lib/python3.12/site-packages/bson/code.py | 100 + .../python3.12/site-packages/bson/codec.py | 400 + .../site-packages/bson/codec_options.py | 505 + .../site-packages/bson/datetime_ms.py | 182 + .../python3.12/site-packages/bson/dbref.py | 133 + .../site-packages/bson/decimal128.py | 351 + .../python3.12/site-packages/bson/errors.py | 49 + .../python3.12/site-packages/bson/int64.py | 39 + .../site-packages/bson/json_util.py | 1151 +++ .../python3.12/site-packages/bson/max_key.py | 56 + .../python3.12/site-packages/bson/min_key.py | 56 + .../python3.12/site-packages/bson/network.py | 67 + .../python3.12/site-packages/bson/objectid.py | 258 + .../python3.12/site-packages/bson/py.typed | 2 + .../site-packages/bson/py3compat.py | 88 + .../python3.12/site-packages/bson/raw_bson.py | 200 + .../python3.12/site-packages/bson/regex.py | 133 + .../lib/python3.12/site-packages/bson/son.py | 211 + .../python3.12/site-packages/bson/time64.c | 781 ++ .../python3.12/site-packages/bson/time64.h | 67 + .../site-packages/bson/time64_config.h | 78 + .../site-packages/bson/time64_limits.h | 95 + .../site-packages/bson/timestamp.py | 123 + .../python3.12/site-packages/bson/typings.py | 31 + .../python3.12/site-packages/bson/tz_util.py | 56 + .../cbor2-5.8.0.dist-info/INSTALLER | 1 + .../cbor2-5.8.0.dist-info/METADATA | 148 + .../cbor2-5.8.0.dist-info/RECORD | 27 + .../cbor2-5.8.0.dist-info/REQUESTED | 0 .../site-packages/cbor2-5.8.0.dist-info/WHEEL | 7 + .../cbor2-5.8.0.dist-info/entry_points.txt | 2 + .../licenses/LICENSE.txt | 20 + .../cbor2-5.8.0.dist-info/top_level.txt | 2 + .../site-packages/cbor2/__init__.py | 83 + .../site-packages/cbor2/_decoder.py | 893 ++ .../site-packages/cbor2/_encoder.py | 868 ++ .../python3.12/site-packages/cbor2/_types.py | 231 + .../python3.12/site-packages/cbor2/decoder.py | 7 + .../python3.12/site-packages/cbor2/encoder.py | 10 + .../python3.12/site-packages/cbor2/py.typed | 0 .../python3.12/site-packages/cbor2/tool.py | 222 + .../python3.12/site-packages/cbor2/types.py | 15 + .../site-packages/dateutil/__init__.py | 24 + .../site-packages/dateutil/_common.py | 43 + .../site-packages/dateutil/_version.py | 4 + .../site-packages/dateutil/easter.py | 89 + .../site-packages/dateutil/parser/__init__.py | 61 + .../site-packages/dateutil/parser/_parser.py | 1613 ++++ .../dateutil/parser/isoparser.py | 416 + .../site-packages/dateutil/relativedelta.py | 599 ++ .../site-packages/dateutil/rrule.py | 1737 ++++ .../site-packages/dateutil/tz/__init__.py | 12 + .../site-packages/dateutil/tz/_common.py | 419 + .../site-packages/dateutil/tz/_factories.py | 80 + .../site-packages/dateutil/tz/tz.py | 1849 ++++ .../site-packages/dateutil/tz/win.py | 370 + .../site-packages/dateutil/tzwin.py | 2 + .../site-packages/dateutil/utils.py | 71 + .../dateutil/zoneinfo/__init__.py | 167 + .../zoneinfo/dateutil-zoneinfo.tar.gz | Bin 0 -> 156400 bytes .../dateutil/zoneinfo/rebuild.py | 75 + .../python3.12/site-packages/dns/__init__.py | 72 + .../site-packages/dns/_asyncbackend.py | 100 + .../site-packages/dns/_asyncio_backend.py | 276 + .../lib/python3.12/site-packages/dns/_ddr.py | 154 + .../python3.12/site-packages/dns/_features.py | 95 + .../site-packages/dns/_immutable_ctx.py | 76 + .../python3.12/site-packages/dns/_no_ssl.py | 61 + .../python3.12/site-packages/dns/_tls_util.py | 19 + .../site-packages/dns/_trio_backend.py | 255 + .../site-packages/dns/asyncbackend.py | 101 + .../site-packages/dns/asyncquery.py | 953 ++ .../site-packages/dns/asyncresolver.py | 478 + .../lib/python3.12/site-packages/dns/btree.py | 850 ++ .../python3.12/site-packages/dns/btreezone.py | 367 + .../python3.12/site-packages/dns/dnssec.py | 1242 +++ .../site-packages/dns/dnssecalgs/__init__.py | 124 + .../site-packages/dns/dnssecalgs/base.py | 89 + .../dns/dnssecalgs/cryptography.py | 68 + .../site-packages/dns/dnssecalgs/dsa.py | 108 + .../site-packages/dns/dnssecalgs/ecdsa.py | 100 + .../site-packages/dns/dnssecalgs/eddsa.py | 70 + .../site-packages/dns/dnssecalgs/rsa.py | 126 + .../site-packages/dns/dnssectypes.py | 71 + .../lib/python3.12/site-packages/dns/e164.py | 116 + .../lib/python3.12/site-packages/dns/edns.py | 591 ++ .../python3.12/site-packages/dns/entropy.py | 130 + .../lib/python3.12/site-packages/dns/enum.py | 113 + .../python3.12/site-packages/dns/exception.py | 169 + .../lib/python3.12/site-packages/dns/flags.py | 123 + .../python3.12/site-packages/dns/grange.py | 72 + .../python3.12/site-packages/dns/immutable.py | 68 + .../lib/python3.12/site-packages/dns/inet.py | 195 + .../lib/python3.12/site-packages/dns/ipv4.py | 76 + .../lib/python3.12/site-packages/dns/ipv6.py | 217 + .../python3.12/site-packages/dns/message.py | 1954 ++++ .../lib/python3.12/site-packages/dns/name.py | 1289 +++ .../python3.12/site-packages/dns/namedict.py | 109 + .../site-packages/dns/nameserver.py | 361 + .../lib/python3.12/site-packages/dns/node.py | 358 + .../python3.12/site-packages/dns/opcode.py | 119 + .../lib/python3.12/site-packages/dns/py.typed | 0 .../lib/python3.12/site-packages/dns/query.py | 1786 ++++ .../site-packages/dns/quic/__init__.py | 78 + .../site-packages/dns/quic/_asyncio.py | 276 + .../site-packages/dns/quic/_common.py | 344 + .../site-packages/dns/quic/_sync.py | 306 + .../site-packages/dns/quic/_trio.py | 250 + .../lib/python3.12/site-packages/dns/rcode.py | 168 + .../lib/python3.12/site-packages/dns/rdata.py | 935 ++ .../site-packages/dns/rdataclass.py | 118 + .../python3.12/site-packages/dns/rdataset.py | 508 + .../python3.12/site-packages/dns/rdatatype.py | 338 + .../site-packages/dns/rdtypes/ANY/AFSDB.py | 45 + .../site-packages/dns/rdtypes/ANY/AMTRELAY.py | 89 + .../site-packages/dns/rdtypes/ANY/AVC.py | 26 + .../site-packages/dns/rdtypes/ANY/CAA.py | 67 + .../site-packages/dns/rdtypes/ANY/CDNSKEY.py | 33 + .../site-packages/dns/rdtypes/ANY/CDS.py | 29 + .../site-packages/dns/rdtypes/ANY/CERT.py | 113 + .../site-packages/dns/rdtypes/ANY/CNAME.py | 28 + .../site-packages/dns/rdtypes/ANY/CSYNC.py | 68 + .../site-packages/dns/rdtypes/ANY/DLV.py | 24 + .../site-packages/dns/rdtypes/ANY/DNAME.py | 27 + .../site-packages/dns/rdtypes/ANY/DNSKEY.py | 33 + .../site-packages/dns/rdtypes/ANY/DS.py | 24 + .../site-packages/dns/rdtypes/ANY/DSYNC.py | 72 + .../site-packages/dns/rdtypes/ANY/EUI48.py | 30 + .../site-packages/dns/rdtypes/ANY/EUI64.py | 30 + .../site-packages/dns/rdtypes/ANY/GPOS.py | 126 + .../site-packages/dns/rdtypes/ANY/HINFO.py | 64 + .../site-packages/dns/rdtypes/ANY/HIP.py | 85 + .../site-packages/dns/rdtypes/ANY/ISDN.py | 78 + .../site-packages/dns/rdtypes/ANY/L32.py | 42 + .../site-packages/dns/rdtypes/ANY/L64.py | 48 + .../site-packages/dns/rdtypes/ANY/LOC.py | 347 + .../site-packages/dns/rdtypes/ANY/LP.py | 42 + .../site-packages/dns/rdtypes/ANY/MX.py | 24 + .../site-packages/dns/rdtypes/ANY/NID.py | 48 + .../site-packages/dns/rdtypes/ANY/NINFO.py | 26 + .../site-packages/dns/rdtypes/ANY/NS.py | 24 + .../site-packages/dns/rdtypes/ANY/NSEC.py | 67 + .../site-packages/dns/rdtypes/ANY/NSEC3.py | 120 + .../dns/rdtypes/ANY/NSEC3PARAM.py | 69 + .../dns/rdtypes/ANY/OPENPGPKEY.py | 53 + .../site-packages/dns/rdtypes/ANY/OPT.py | 77 + .../site-packages/dns/rdtypes/ANY/PTR.py | 24 + .../site-packages/dns/rdtypes/ANY/RESINFO.py | 24 + .../site-packages/dns/rdtypes/ANY/RP.py | 58 + .../site-packages/dns/rdtypes/ANY/RRSIG.py | 155 + .../site-packages/dns/rdtypes/ANY/RT.py | 24 + .../site-packages/dns/rdtypes/ANY/SMIMEA.py | 9 + .../site-packages/dns/rdtypes/ANY/SOA.py | 78 + .../site-packages/dns/rdtypes/ANY/SPF.py | 26 + .../site-packages/dns/rdtypes/ANY/SSHFP.py | 67 + .../site-packages/dns/rdtypes/ANY/TKEY.py | 135 + .../site-packages/dns/rdtypes/ANY/TLSA.py | 9 + .../site-packages/dns/rdtypes/ANY/TSIG.py | 160 + .../site-packages/dns/rdtypes/ANY/TXT.py | 24 + .../site-packages/dns/rdtypes/ANY/URI.py | 79 + .../site-packages/dns/rdtypes/ANY/WALLET.py | 9 + .../site-packages/dns/rdtypes/ANY/X25.py | 57 + .../site-packages/dns/rdtypes/ANY/ZONEMD.py | 64 + .../site-packages/dns/rdtypes/ANY/__init__.py | 71 + .../site-packages/dns/rdtypes/CH/A.py | 60 + .../site-packages/dns/rdtypes/CH/__init__.py | 22 + .../site-packages/dns/rdtypes/IN/A.py | 51 + .../site-packages/dns/rdtypes/IN/AAAA.py | 51 + .../site-packages/dns/rdtypes/IN/APL.py | 150 + .../site-packages/dns/rdtypes/IN/DHCID.py | 54 + .../site-packages/dns/rdtypes/IN/HTTPS.py | 9 + .../site-packages/dns/rdtypes/IN/IPSECKEY.py | 87 + .../site-packages/dns/rdtypes/IN/KX.py | 24 + .../site-packages/dns/rdtypes/IN/NAPTR.py | 109 + .../site-packages/dns/rdtypes/IN/NSAP.py | 60 + .../site-packages/dns/rdtypes/IN/NSAP_PTR.py | 24 + .../site-packages/dns/rdtypes/IN/PX.py | 73 + .../site-packages/dns/rdtypes/IN/SRV.py | 75 + .../site-packages/dns/rdtypes/IN/SVCB.py | 9 + .../site-packages/dns/rdtypes/IN/WKS.py | 100 + .../site-packages/dns/rdtypes/IN/__init__.py | 35 + .../site-packages/dns/rdtypes/__init__.py | 33 + .../site-packages/dns/rdtypes/dnskeybase.py | 83 + .../site-packages/dns/rdtypes/dsbase.py | 83 + .../site-packages/dns/rdtypes/euibase.py | 73 + .../site-packages/dns/rdtypes/mxbase.py | 87 + .../site-packages/dns/rdtypes/nsbase.py | 63 + .../site-packages/dns/rdtypes/svcbbase.py | 587 ++ .../site-packages/dns/rdtypes/tlsabase.py | 69 + .../site-packages/dns/rdtypes/txtbase.py | 109 + .../site-packages/dns/rdtypes/util.py | 269 + .../python3.12/site-packages/dns/renderer.py | 355 + .../python3.12/site-packages/dns/resolver.py | 2068 ++++ .../site-packages/dns/reversename.py | 106 + .../lib/python3.12/site-packages/dns/rrset.py | 287 + .../python3.12/site-packages/dns/serial.py | 118 + .../lib/python3.12/site-packages/dns/set.py | 308 + .../python3.12/site-packages/dns/tokenizer.py | 706 ++ .../site-packages/dns/transaction.py | 651 ++ .../lib/python3.12/site-packages/dns/tsig.py | 359 + .../site-packages/dns/tsigkeyring.py | 68 + .../lib/python3.12/site-packages/dns/ttl.py | 90 + .../python3.12/site-packages/dns/update.py | 389 + .../python3.12/site-packages/dns/version.py | 42 + .../python3.12/site-packages/dns/versioned.py | 320 + .../python3.12/site-packages/dns/win32util.py | 438 + .../lib/python3.12/site-packages/dns/wire.py | 98 + .../lib/python3.12/site-packages/dns/xfr.py | 356 + .../lib/python3.12/site-packages/dns/zone.py | 1462 +++ .../python3.12/site-packages/dns/zonefile.py | 756 ++ .../python3.12/site-packages/dns/zonetypes.py | 37 + .../dnspython-2.8.0.dist-info/INSTALLER | 1 + .../dnspython-2.8.0.dist-info/METADATA | 149 + .../dnspython-2.8.0.dist-info/RECORD | 304 + .../dnspython-2.8.0.dist-info/WHEEL | 4 + .../licenses/LICENSE | 35 + .../site-packages/gridfs/__init__.py | 54 + .../gridfs/asynchronous/__init__.py | 42 + .../gridfs/asynchronous/grid_file.py | 2008 ++++ .../python3.12/site-packages/gridfs/errors.py | 34 + .../site-packages/gridfs/grid_file.py | 18 + .../site-packages/gridfs/grid_file_shared.py | 168 + .../python3.12/site-packages/gridfs/py.typed | 2 + .../gridfs/synchronous/__init__.py | 42 + .../gridfs/synchronous/grid_file.py | 1994 ++++ .../pip-24.0.dist-info/AUTHORS.txt | 760 ++ .../pip-24.0.dist-info/INSTALLER | 1 + .../pip-24.0.dist-info/LICENSE.txt | 20 + .../site-packages/pip-24.0.dist-info/METADATA | 88 + .../site-packages/pip-24.0.dist-info/RECORD | 1005 ++ .../pip-24.0.dist-info/REQUESTED | 0 .../site-packages/pip-24.0.dist-info/WHEEL | 5 + .../pip-24.0.dist-info/entry_points.txt | 4 + .../pip-24.0.dist-info/top_level.txt | 1 + .../python3.12/site-packages/pip/__init__.py | 13 + .../python3.12/site-packages/pip/__main__.py | 24 + .../site-packages/pip/__pip-runner__.py | 50 + .../site-packages/pip/_internal/__init__.py | 18 + .../site-packages/pip/_internal/build_env.py | 311 + .../site-packages/pip/_internal/cache.py | 290 + .../pip/_internal/cli/__init__.py | 4 + .../pip/_internal/cli/autocompletion.py | 172 + .../pip/_internal/cli/base_command.py | 236 + .../pip/_internal/cli/cmdoptions.py | 1074 ++ .../pip/_internal/cli/command_context.py | 27 + .../site-packages/pip/_internal/cli/main.py | 79 + .../pip/_internal/cli/main_parser.py | 134 + .../site-packages/pip/_internal/cli/parser.py | 294 + .../pip/_internal/cli/progress_bars.py | 68 + .../pip/_internal/cli/req_command.py | 505 + .../pip/_internal/cli/spinners.py | 159 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 132 + .../pip/_internal/commands/cache.py | 225 + .../pip/_internal/commands/check.py | 54 + .../pip/_internal/commands/completion.py | 130 + .../pip/_internal/commands/configuration.py | 280 + .../pip/_internal/commands/debug.py | 201 + .../pip/_internal/commands/download.py | 147 + .../pip/_internal/commands/freeze.py | 109 + .../pip/_internal/commands/hash.py | 59 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/index.py | 139 + .../pip/_internal/commands/inspect.py | 92 + .../pip/_internal/commands/install.py | 774 ++ .../pip/_internal/commands/list.py | 370 + .../pip/_internal/commands/search.py | 174 + .../pip/_internal/commands/show.py | 189 + .../pip/_internal/commands/uninstall.py | 113 + .../pip/_internal/commands/wheel.py | 183 + .../pip/_internal/configuration.py | 383 + .../pip/_internal/distributions/__init__.py | 21 + .../pip/_internal/distributions/base.py | 51 + .../pip/_internal/distributions/installed.py | 29 + .../pip/_internal/distributions/sdist.py | 156 + .../pip/_internal/distributions/wheel.py | 40 + .../site-packages/pip/_internal/exceptions.py | 728 ++ .../pip/_internal/index/__init__.py | 2 + .../pip/_internal/index/collector.py | 507 + .../pip/_internal/index/package_finder.py | 1027 ++ .../pip/_internal/index/sources.py | 285 + .../pip/_internal/locations/__init__.py | 467 + .../pip/_internal/locations/_distutils.py | 172 + .../pip/_internal/locations/_sysconfig.py | 213 + .../pip/_internal/locations/base.py | 81 + .../site-packages/pip/_internal/main.py | 12 + .../pip/_internal/metadata/__init__.py | 128 + .../pip/_internal/metadata/_json.py | 84 + .../pip/_internal/metadata/base.py | 702 ++ .../_internal/metadata/importlib/__init__.py | 6 + .../_internal/metadata/importlib/_compat.py | 55 + .../_internal/metadata/importlib/_dists.py | 227 + .../pip/_internal/metadata/importlib/_envs.py | 189 + .../pip/_internal/metadata/pkg_resources.py | 278 + .../pip/_internal/models/__init__.py | 2 + .../pip/_internal/models/candidate.py | 30 + .../pip/_internal/models/direct_url.py | 235 + .../pip/_internal/models/format_control.py | 78 + .../pip/_internal/models/index.py | 28 + .../_internal/models/installation_report.py | 56 + .../pip/_internal/models/link.py | 579 ++ .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 132 + .../pip/_internal/models/selection_prefs.py | 51 + .../pip/_internal/models/target_python.py | 122 + .../pip/_internal/models/wheel.py | 92 + .../pip/_internal/network/__init__.py | 2 + .../pip/_internal/network/auth.py | 561 ++ .../pip/_internal/network/cache.py | 106 + .../pip/_internal/network/download.py | 186 + .../pip/_internal/network/lazy_wheel.py | 210 + .../pip/_internal/network/session.py | 520 + .../pip/_internal/network/utils.py | 96 + .../pip/_internal/network/xmlrpc.py | 62 + .../pip/_internal/operations/__init__.py | 0 .../_internal/operations/build/__init__.py | 0 .../operations/build/build_tracker.py | 139 + .../_internal/operations/build/metadata.py | 39 + .../operations/build/metadata_editable.py | 41 + .../operations/build/metadata_legacy.py | 74 + .../pip/_internal/operations/build/wheel.py | 37 + .../operations/build/wheel_editable.py | 46 + .../operations/build/wheel_legacy.py | 102 + .../pip/_internal/operations/check.py | 187 + .../pip/_internal/operations/freeze.py | 255 + .../_internal/operations/install/__init__.py | 2 + .../operations/install/editable_legacy.py | 46 + .../pip/_internal/operations/install/wheel.py | 734 ++ .../pip/_internal/operations/prepare.py | 730 ++ .../site-packages/pip/_internal/pyproject.py | 179 + .../pip/_internal/req/__init__.py | 92 + .../pip/_internal/req/constructors.py | 576 ++ .../pip/_internal/req/req_file.py | 554 ++ .../pip/_internal/req/req_install.py | 923 ++ .../pip/_internal/req/req_set.py | 119 + .../pip/_internal/req/req_uninstall.py | 649 ++ .../pip/_internal/resolution/__init__.py | 0 .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../_internal/resolution/legacy/resolver.py | 598 ++ .../resolution/resolvelib/__init__.py | 0 .../_internal/resolution/resolvelib/base.py | 141 + .../resolution/resolvelib/candidates.py | 597 ++ .../resolution/resolvelib/factory.py | 812 ++ .../resolution/resolvelib/found_candidates.py | 155 + .../resolution/resolvelib/provider.py | 255 + .../resolution/resolvelib/reporter.py | 80 + .../resolution/resolvelib/requirements.py | 166 + .../resolution/resolvelib/resolver.py | 317 + .../pip/_internal/self_outdated_check.py | 248 + .../pip/_internal/utils/__init__.py | 0 .../pip/_internal/utils/_jaraco_text.py | 109 + .../site-packages/pip/_internal/utils/_log.py | 38 + .../pip/_internal/utils/appdirs.py | 52 + .../pip/_internal/utils/compat.py | 63 + .../pip/_internal/utils/compatibility_tags.py | 165 + .../pip/_internal/utils/datetime.py | 11 + .../pip/_internal/utils/deprecation.py | 120 + .../pip/_internal/utils/direct_url_helpers.py | 87 + .../pip/_internal/utils/egg_link.py | 80 + .../pip/_internal/utils/encoding.py | 36 + .../pip/_internal/utils/entrypoints.py | 84 + .../pip/_internal/utils/filesystem.py | 153 + .../pip/_internal/utils/filetypes.py | 27 + .../pip/_internal/utils/glibc.py | 88 + .../pip/_internal/utils/hashes.py | 151 + .../pip/_internal/utils/logging.py | 348 + .../site-packages/pip/_internal/utils/misc.py | 783 ++ .../pip/_internal/utils/models.py | 39 + .../pip/_internal/utils/packaging.py | 57 + .../pip/_internal/utils/setuptools_build.py | 146 + .../pip/_internal/utils/subprocess.py | 260 + .../pip/_internal/utils/temp_dir.py | 296 + .../pip/_internal/utils/unpacking.py | 257 + .../site-packages/pip/_internal/utils/urls.py | 62 + .../pip/_internal/utils/virtualenv.py | 104 + .../pip/_internal/utils/wheel.py | 134 + .../pip/_internal/vcs/__init__.py | 15 + .../site-packages/pip/_internal/vcs/bazaar.py | 112 + .../site-packages/pip/_internal/vcs/git.py | 526 + .../pip/_internal/vcs/mercurial.py | 163 + .../pip/_internal/vcs/subversion.py | 324 + .../pip/_internal/vcs/versioncontrol.py | 705 ++ .../pip/_internal/wheel_builder.py | 354 + .../site-packages/pip/_vendor/__init__.py | 121 + .../pip/_vendor/cachecontrol/__init__.py | 28 + .../pip/_vendor/cachecontrol/_cmd.py | 70 + .../pip/_vendor/cachecontrol/adapter.py | 161 + .../pip/_vendor/cachecontrol/cache.py | 74 + .../_vendor/cachecontrol/caches/__init__.py | 8 + .../_vendor/cachecontrol/caches/file_cache.py | 181 + .../cachecontrol/caches/redis_cache.py | 48 + .../pip/_vendor/cachecontrol/controller.py | 494 + .../pip/_vendor/cachecontrol/filewrapper.py | 119 + .../pip/_vendor/cachecontrol/heuristics.py | 154 + .../pip/_vendor/cachecontrol/serialize.py | 206 + .../pip/_vendor/cachecontrol/wrapper.py | 43 + .../pip/_vendor/certifi/__init__.py | 4 + .../pip/_vendor/certifi/__main__.py | 12 + .../pip/_vendor/certifi/cacert.pem | 4635 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 119 + .../pip/_vendor/chardet/__init__.py | 115 + .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 261 + .../pip/_vendor/chardet/charsetgroupprober.py | 106 + .../pip/_vendor/chardet/charsetprober.py | 147 + .../pip/_vendor/chardet/cli/__init__.py | 0 .../pip/_vendor/chardet/cli/chardetect.py | 112 + .../pip/_vendor/chardet/codingstatemachine.py | 90 + .../_vendor/chardet/codingstatemachinedict.py | 19 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 85 + .../pip/_vendor/chardet/escprober.py | 102 + .../pip/_vendor/chardet/escsm.py | 261 + .../pip/_vendor/chardet/eucjpprober.py | 102 + .../pip/_vendor/chardet/euckrfreq.py | 196 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 388 + .../pip/_vendor/chardet/euctwprober.py | 47 + .../pip/_vendor/chardet/gb2312freq.py | 284 + .../pip/_vendor/chardet/gb2312prober.py | 47 + .../pip/_vendor/chardet/hebrewprober.py | 316 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/johabfreq.py | 2382 +++++ .../pip/_vendor/chardet/johabprober.py | 47 + .../pip/_vendor/chardet/jpcntx.py | 238 + .../pip/_vendor/chardet/langbulgarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langgreekmodel.py | 4397 +++++++++ .../pip/_vendor/chardet/langhebrewmodel.py | 4380 +++++++++ .../pip/_vendor/chardet/langhungarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langrussianmodel.py | 5725 +++++++++++ .../pip/_vendor/chardet/langthaimodel.py | 4380 +++++++++ .../pip/_vendor/chardet/langturkishmodel.py | 4380 +++++++++ .../pip/_vendor/chardet/latin1prober.py | 147 + .../pip/_vendor/chardet/macromanprober.py | 162 + .../pip/_vendor/chardet/mbcharsetprober.py | 95 + .../pip/_vendor/chardet/mbcsgroupprober.py | 57 + .../pip/_vendor/chardet/mbcssm.py | 661 ++ .../pip/_vendor/chardet/metadata/__init__.py | 0 .../pip/_vendor/chardet/metadata/languages.py | 352 + .../pip/_vendor/chardet/resultdict.py | 16 + .../pip/_vendor/chardet/sbcharsetprober.py | 162 + .../pip/_vendor/chardet/sbcsgroupprober.py | 88 + .../pip/_vendor/chardet/sjisprober.py | 105 + .../pip/_vendor/chardet/universaldetector.py | 362 + .../pip/_vendor/chardet/utf1632prober.py | 225 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 7 + .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 277 + .../pip/_vendor/colorama/initialise.py | 121 + .../pip/_vendor/colorama/tests/__init__.py | 1 + .../pip/_vendor/colorama/tests/ansi_test.py | 76 + .../colorama/tests/ansitowin32_test.py | 294 + .../_vendor/colorama/tests/initialise_test.py | 189 + .../pip/_vendor/colorama/tests/isatty_test.py | 57 + .../pip/_vendor/colorama/tests/utils.py | 49 + .../_vendor/colorama/tests/winterm_test.py | 131 + .../pip/_vendor/colorama/win32.py | 180 + .../pip/_vendor/colorama/winterm.py | 195 + .../pip/_vendor/distlib/__init__.py | 33 + .../pip/_vendor/distlib/compat.py | 1138 +++ .../pip/_vendor/distlib/database.py | 1359 +++ .../pip/_vendor/distlib/index.py | 508 + .../pip/_vendor/distlib/locators.py | 1303 +++ .../pip/_vendor/distlib/manifest.py | 384 + .../pip/_vendor/distlib/markers.py | 167 + .../pip/_vendor/distlib/metadata.py | 1068 ++ .../pip/_vendor/distlib/resources.py | 358 + .../pip/_vendor/distlib/scripts.py | 452 + .../site-packages/pip/_vendor/distlib/util.py | 2025 ++++ .../pip/_vendor/distlib/version.py | 751 ++ .../pip/_vendor/distlib/wheel.py | 1099 +++ .../pip/_vendor/distro/__init__.py | 54 + .../pip/_vendor/distro/__main__.py | 4 + .../pip/_vendor/distro/distro.py | 1399 +++ .../pip/_vendor/idna/__init__.py | 44 + .../site-packages/pip/_vendor/idna/codec.py | 112 + .../site-packages/pip/_vendor/idna/compat.py | 13 + .../site-packages/pip/_vendor/idna/core.py | 400 + .../pip/_vendor/idna/idnadata.py | 4246 ++++++++ .../pip/_vendor/idna/intranges.py | 54 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8600 +++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 57 + .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 193 + .../pip/_vendor/msgpack/fallback.py | 1010 ++ .../pip/_vendor/packaging/__about__.py | 26 + .../pip/_vendor/packaging/__init__.py | 25 + .../pip/_vendor/packaging/_manylinux.py | 301 + .../pip/_vendor/packaging/_musllinux.py | 136 + .../pip/_vendor/packaging/_structures.py | 61 + .../pip/_vendor/packaging/markers.py | 304 + .../pip/_vendor/packaging/requirements.py | 146 + .../pip/_vendor/packaging/specifiers.py | 802 ++ .../pip/_vendor/packaging/tags.py | 487 + .../pip/_vendor/packaging/utils.py | 136 + .../pip/_vendor/packaging/version.py | 504 + .../pip/_vendor/pkg_resources/__init__.py | 3361 +++++++ .../pip/_vendor/platformdirs/__init__.py | 566 ++ .../pip/_vendor/platformdirs/__main__.py | 53 + .../pip/_vendor/platformdirs/android.py | 210 + .../pip/_vendor/platformdirs/api.py | 223 + .../pip/_vendor/platformdirs/macos.py | 91 + .../pip/_vendor/platformdirs/unix.py | 223 + .../pip/_vendor/platformdirs/version.py | 4 + .../pip/_vendor/platformdirs/windows.py | 255 + .../pip/_vendor/pygments/__init__.py | 82 + .../pip/_vendor/pygments/__main__.py | 17 + .../pip/_vendor/pygments/cmdline.py | 668 ++ .../pip/_vendor/pygments/console.py | 70 + .../pip/_vendor/pygments/filter.py | 71 + .../pip/_vendor/pygments/filters/__init__.py | 940 ++ .../pip/_vendor/pygments/formatter.py | 124 + .../_vendor/pygments/formatters/__init__.py | 158 + .../_vendor/pygments/formatters/_mapping.py | 23 + .../pip/_vendor/pygments/formatters/bbcode.py | 108 + .../pip/_vendor/pygments/formatters/groff.py | 170 + .../pip/_vendor/pygments/formatters/html.py | 989 ++ .../pip/_vendor/pygments/formatters/img.py | 645 ++ .../pip/_vendor/pygments/formatters/irc.py | 154 + .../pip/_vendor/pygments/formatters/latex.py | 521 + .../pip/_vendor/pygments/formatters/other.py | 161 + .../pygments/formatters/pangomarkup.py | 83 + .../pip/_vendor/pygments/formatters/rtf.py | 146 + .../pip/_vendor/pygments/formatters/svg.py | 188 + .../_vendor/pygments/formatters/terminal.py | 127 + .../pygments/formatters/terminal256.py | 338 + .../pip/_vendor/pygments/lexer.py | 943 ++ .../pip/_vendor/pygments/lexers/__init__.py | 362 + .../pip/_vendor/pygments/lexers/_mapping.py | 559 ++ .../pip/_vendor/pygments/lexers/python.py | 1198 +++ .../pip/_vendor/pygments/modeline.py | 43 + .../pip/_vendor/pygments/plugin.py | 88 + .../pip/_vendor/pygments/regexopt.py | 91 + .../pip/_vendor/pygments/scanner.py | 104 + .../pip/_vendor/pygments/sphinxext.py | 217 + .../pip/_vendor/pygments/style.py | 197 + .../pip/_vendor/pygments/styles/__init__.py | 103 + .../pip/_vendor/pygments/token.py | 213 + .../pip/_vendor/pygments/unistring.py | 153 + .../pip/_vendor/pygments/util.py | 330 + .../pip/_vendor/pyparsing/__init__.py | 322 + .../pip/_vendor/pyparsing/actions.py | 217 + .../pip/_vendor/pyparsing/common.py | 432 + .../pip/_vendor/pyparsing/core.py | 6115 ++++++++++++ .../pip/_vendor/pyparsing/diagram/__init__.py | 656 ++ .../pip/_vendor/pyparsing/exceptions.py | 299 + .../pip/_vendor/pyparsing/helpers.py | 1100 +++ .../pip/_vendor/pyparsing/results.py | 796 ++ .../pip/_vendor/pyparsing/testing.py | 331 + .../pip/_vendor/pyparsing/unicode.py | 361 + .../pip/_vendor/pyparsing/util.py | 284 + .../pip/_vendor/pyproject_hooks/__init__.py | 23 + .../pip/_vendor/pyproject_hooks/_compat.py | 8 + .../pip/_vendor/pyproject_hooks/_impl.py | 330 + .../pyproject_hooks/_in_process/__init__.py | 18 + .../_in_process/_in_process.py | 353 + .../pip/_vendor/requests/__init__.py | 182 + .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 50 + .../pip/_vendor/requests/adapters.py | 538 ++ .../site-packages/pip/_vendor/requests/api.py | 157 + .../pip/_vendor/requests/auth.py | 315 + .../pip/_vendor/requests/certs.py | 24 + .../pip/_vendor/requests/compat.py | 67 + .../pip/_vendor/requests/cookies.py | 561 ++ .../pip/_vendor/requests/exceptions.py | 141 + .../pip/_vendor/requests/help.py | 131 + .../pip/_vendor/requests/hooks.py | 33 + .../pip/_vendor/requests/models.py | 1034 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 833 ++ .../pip/_vendor/requests/status_codes.py | 128 + .../pip/_vendor/requests/structures.py | 99 + .../pip/_vendor/requests/utils.py | 1088 +++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../pip/_vendor/resolvelib/reporters.py | 43 + .../pip/_vendor/resolvelib/resolvers.py | 547 ++ .../pip/_vendor/resolvelib/structs.py | 170 + .../pip/_vendor/rich/__init__.py | 177 + .../pip/_vendor/rich/__main__.py | 274 + .../pip/_vendor/rich/_cell_widths.py | 451 + .../pip/_vendor/rich/_emoji_codes.py | 3610 +++++++ .../pip/_vendor/rich/_emoji_replace.py | 32 + .../pip/_vendor/rich/_export_format.py | 76 + .../pip/_vendor/rich/_extension.py | 10 + .../site-packages/pip/_vendor/rich/_fileno.py | 24 + .../pip/_vendor/rich/_inspect.py | 270 + .../pip/_vendor/rich/_log_render.py | 94 + .../site-packages/pip/_vendor/rich/_loop.py | 43 + .../pip/_vendor/rich/_null_file.py | 69 + .../pip/_vendor/rich/_palettes.py | 309 + .../site-packages/pip/_vendor/rich/_pick.py | 17 + .../site-packages/pip/_vendor/rich/_ratio.py | 160 + .../pip/_vendor/rich/_spinners.py | 482 + .../site-packages/pip/_vendor/rich/_stack.py | 16 + .../site-packages/pip/_vendor/rich/_timer.py | 19 + .../pip/_vendor/rich/_win32_console.py | 662 ++ .../pip/_vendor/rich/_windows.py | 72 + .../pip/_vendor/rich/_windows_renderer.py | 56 + .../site-packages/pip/_vendor/rich/_wrap.py | 56 + .../site-packages/pip/_vendor/rich/abc.py | 33 + .../site-packages/pip/_vendor/rich/align.py | 311 + .../site-packages/pip/_vendor/rich/ansi.py | 240 + .../site-packages/pip/_vendor/rich/bar.py | 94 + .../site-packages/pip/_vendor/rich/box.py | 517 + .../site-packages/pip/_vendor/rich/cells.py | 154 + .../site-packages/pip/_vendor/rich/color.py | 622 ++ .../pip/_vendor/rich/color_triplet.py | 38 + .../site-packages/pip/_vendor/rich/columns.py | 187 + .../site-packages/pip/_vendor/rich/console.py | 2633 +++++ .../pip/_vendor/rich/constrain.py | 37 + .../pip/_vendor/rich/containers.py | 167 + .../site-packages/pip/_vendor/rich/control.py | 225 + .../pip/_vendor/rich/default_styles.py | 190 + .../pip/_vendor/rich/diagnose.py | 37 + .../site-packages/pip/_vendor/rich/emoji.py | 96 + .../site-packages/pip/_vendor/rich/errors.py | 34 + .../pip/_vendor/rich/file_proxy.py | 57 + .../pip/_vendor/rich/filesize.py | 89 + .../pip/_vendor/rich/highlighter.py | 232 + .../site-packages/pip/_vendor/rich/json.py | 140 + .../site-packages/pip/_vendor/rich/jupyter.py | 101 + .../site-packages/pip/_vendor/rich/layout.py | 443 + .../site-packages/pip/_vendor/rich/live.py | 375 + .../pip/_vendor/rich/live_render.py | 113 + .../site-packages/pip/_vendor/rich/logging.py | 289 + .../site-packages/pip/_vendor/rich/markup.py | 246 + .../site-packages/pip/_vendor/rich/measure.py | 151 + .../site-packages/pip/_vendor/rich/padding.py | 141 + .../site-packages/pip/_vendor/rich/pager.py | 34 + .../site-packages/pip/_vendor/rich/palette.py | 100 + .../site-packages/pip/_vendor/rich/panel.py | 308 + .../site-packages/pip/_vendor/rich/pretty.py | 994 ++ .../pip/_vendor/rich/progress.py | 1702 ++++ .../pip/_vendor/rich/progress_bar.py | 224 + .../site-packages/pip/_vendor/rich/prompt.py | 376 + .../pip/_vendor/rich/protocol.py | 42 + .../site-packages/pip/_vendor/rich/region.py | 10 + .../site-packages/pip/_vendor/rich/repr.py | 149 + .../site-packages/pip/_vendor/rich/rule.py | 130 + .../site-packages/pip/_vendor/rich/scope.py | 86 + .../site-packages/pip/_vendor/rich/screen.py | 54 + .../site-packages/pip/_vendor/rich/segment.py | 739 ++ .../site-packages/pip/_vendor/rich/spinner.py | 137 + .../site-packages/pip/_vendor/rich/status.py | 132 + .../site-packages/pip/_vendor/rich/style.py | 796 ++ .../site-packages/pip/_vendor/rich/styled.py | 42 + .../site-packages/pip/_vendor/rich/syntax.py | 948 ++ .../site-packages/pip/_vendor/rich/table.py | 1002 ++ .../pip/_vendor/rich/terminal_theme.py | 153 + .../site-packages/pip/_vendor/rich/text.py | 1307 +++ .../site-packages/pip/_vendor/rich/theme.py | 115 + .../site-packages/pip/_vendor/rich/themes.py | 5 + .../pip/_vendor/rich/traceback.py | 756 ++ .../site-packages/pip/_vendor/rich/tree.py | 251 + .../site-packages/pip/_vendor/six.py | 998 ++ .../pip/_vendor/tenacity/__init__.py | 608 ++ .../pip/_vendor/tenacity/_asyncio.py | 94 + .../pip/_vendor/tenacity/_utils.py | 76 + .../pip/_vendor/tenacity/after.py | 51 + .../pip/_vendor/tenacity/before.py | 46 + .../pip/_vendor/tenacity/before_sleep.py | 71 + .../site-packages/pip/_vendor/tenacity/nap.py | 43 + .../pip/_vendor/tenacity/retry.py | 272 + .../pip/_vendor/tenacity/stop.py | 103 + .../pip/_vendor/tenacity/tornadoweb.py | 59 + .../pip/_vendor/tenacity/wait.py | 228 + .../pip/_vendor/tomli/__init__.py | 11 + .../pip/_vendor/tomli/_parser.py | 691 ++ .../site-packages/pip/_vendor/tomli/_re.py | 107 + .../site-packages/pip/_vendor/tomli/_types.py | 10 + .../pip/_vendor/truststore/__init__.py | 13 + .../pip/_vendor/truststore/_api.py | 302 + .../pip/_vendor/truststore/_macos.py | 501 + .../pip/_vendor/truststore/_openssl.py | 66 + .../pip/_vendor/truststore/_ssl_constants.py | 31 + .../pip/_vendor/truststore/_windows.py | 554 ++ .../pip/_vendor/typing_extensions.py | 3072 ++++++ .../pip/_vendor/urllib3/__init__.py | 102 + .../pip/_vendor/urllib3/_collections.py | 355 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 572 ++ .../pip/_vendor/urllib3/connectionpool.py | 1137 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 397 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 518 + .../urllib3/contrib/securetransport.py | 921 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 323 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 0 .../urllib3/packages/backports/__init__.py | 0 .../urllib3/packages/backports/makefile.py | 51 + .../packages/backports/weakref_finalize.py | 155 + .../pip/_vendor/urllib3/packages/six.py | 1076 +++ .../pip/_vendor/urllib3/poolmanager.py | 556 ++ .../pip/_vendor/urllib3/request.py | 191 + .../pip/_vendor/urllib3/response.py | 879 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../pip/_vendor/urllib3/util/connection.py | 149 + .../pip/_vendor/urllib3/util/proxy.py | 57 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 137 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 622 ++ .../pip/_vendor/urllib3/util/ssl_.py | 495 + .../urllib3/util/ssl_match_hostname.py | 159 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 271 + .../pip/_vendor/urllib3/util/url.py | 435 + .../pip/_vendor/urllib3/util/wait.py | 152 + .../site-packages/pip/_vendor/vendor.txt | 24 + .../pip/_vendor/webencodings/__init__.py | 342 + .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + .../lib/python3.12/site-packages/pip/py.typed | 4 + .../pymongo-4.16.0.dist-info/INSTALLER | 1 + .../pymongo-4.16.0.dist-info/METADATA | 281 + .../pymongo-4.16.0.dist-info/RECORD | 309 + .../pymongo-4.16.0.dist-info/REQUESTED | 0 .../pymongo-4.16.0.dist-info/WHEEL | 7 + .../pymongo-4.16.0.dist-info/licenses/LICENSE | 201 + .../site-packages/pymongo/__init__.py | 178 + .../site-packages/pymongo/_asyncio_lock.py | 309 + .../site-packages/pymongo/_asyncio_task.py | 49 + .../site-packages/pymongo/_azure_helpers.py | 57 + .../pymongo/_client_bulk_shared.py | 79 + .../_cmessage.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 406664 bytes .../_cmessage.cpython-311-x86_64-linux-gnu.so | Bin 0 -> 410640 bytes .../_cmessage.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 447864 bytes .../_cmessage.cpython-39-x86_64-linux-gnu.so | Bin 0 -> 404416 bytes .../site-packages/pymongo/_cmessagemodule.c | 1049 ++ .../python3.12/site-packages/pymongo/_csot.py | 167 + .../site-packages/pymongo/_gcp_helpers.py | 40 + .../site-packages/pymongo/_version.py | 43 + .../pymongo/asynchronous/__init__.py | 0 .../pymongo/asynchronous/aggregation.py | 254 + .../pymongo/asynchronous/auth.py | 455 + .../pymongo/asynchronous/auth_aws.py | 100 + .../pymongo/asynchronous/auth_oidc.py | 305 + .../pymongo/asynchronous/bulk.py | 753 ++ .../pymongo/asynchronous/change_stream.py | 496 + .../pymongo/asynchronous/client_bulk.py | 756 ++ .../pymongo/asynchronous/client_session.py | 1187 +++ .../pymongo/asynchronous/collection.py | 3666 +++++++ .../pymongo/asynchronous/command_cursor.py | 472 + .../pymongo/asynchronous/cursor.py | 1375 +++ .../pymongo/asynchronous/database.py | 1469 +++ .../pymongo/asynchronous/encryption.py | 1286 +++ .../pymongo/asynchronous/helpers.py | 102 + .../pymongo/asynchronous/mongo_client.py | 2978 ++++++ .../pymongo/asynchronous/monitor.py | 545 ++ .../pymongo/asynchronous/network.py | 298 + .../pymongo/asynchronous/pool.py | 1462 +++ .../pymongo/asynchronous/server.py | 383 + .../pymongo/asynchronous/settings.py | 175 + .../pymongo/asynchronous/srv_resolver.py | 155 + .../pymongo/asynchronous/topology.py | 1137 +++ .../pymongo/asynchronous/uri_parser.py | 193 + .../python3.12/site-packages/pymongo/auth.py | 22 + .../site-packages/pymongo/auth_oidc.py | 23 + .../site-packages/pymongo/auth_oidc_shared.py | 132 + .../site-packages/pymongo/auth_shared.py | 255 + .../site-packages/pymongo/bulk_shared.py | 131 + .../site-packages/pymongo/change_stream.py | 22 + .../site-packages/pymongo/client_options.py | 348 + .../site-packages/pymongo/client_session.py | 22 + .../site-packages/pymongo/collation.py | 226 + .../site-packages/pymongo/collection.py | 25 + .../site-packages/pymongo/command_cursor.py | 22 + .../site-packages/pymongo/common.py | 1183 +++ .../pymongo/compression_support.py | 187 + .../site-packages/pymongo/cursor.py | 23 + .../site-packages/pymongo/cursor_shared.py | 94 + .../site-packages/pymongo/daemon.py | 148 + .../site-packages/pymongo/database.py | 22 + .../site-packages/pymongo/database_shared.py | 34 + .../site-packages/pymongo/driver_info.py | 45 + .../site-packages/pymongo/encryption.py | 22 + .../pymongo/encryption_options.py | 392 + .../site-packages/pymongo/errors.py | 436 + .../site-packages/pymongo/event_loggers.py | 226 + .../python3.12/site-packages/pymongo/hello.py | 224 + .../site-packages/pymongo/helpers_shared.py | 364 + .../python3.12/site-packages/pymongo/lock.py | 92 + .../site-packages/pymongo/logger.py | 189 + .../pymongo/max_staleness_selectors.py | 124 + .../site-packages/pymongo/message.py | 1900 ++++ .../site-packages/pymongo/mongo_client.py | 22 + .../site-packages/pymongo/monitoring.py | 1909 ++++ .../site-packages/pymongo/network_layer.py | 786 ++ .../site-packages/pymongo/ocsp_cache.py | 131 + .../site-packages/pymongo/ocsp_support.py | 424 + .../site-packages/pymongo/operations.py | 853 ++ .../pymongo/periodic_executor.py | 296 + .../python3.12/site-packages/pymongo/pool.py | 22 + .../site-packages/pymongo/pool_options.py | 518 + .../site-packages/pymongo/pool_shared.py | 519 + .../python3.12/site-packages/pymongo/py.typed | 2 + .../pymongo/pyopenssl_context.py | 424 + .../site-packages/pymongo/read_concern.py | 79 + .../site-packages/pymongo/read_preferences.py | 637 ++ .../site-packages/pymongo/response.py | 130 + .../site-packages/pymongo/results.py | 367 + .../site-packages/pymongo/saslprep.py | 116 + .../site-packages/pymongo/server_api.py | 173 + .../pymongo/server_description.py | 302 + .../site-packages/pymongo/server_selectors.py | 174 + .../site-packages/pymongo/server_type.py | 33 + .../site-packages/pymongo/socket_checker.py | 102 + .../site-packages/pymongo/ssl_context.py | 42 + .../site-packages/pymongo/ssl_support.py | 146 + .../pymongo/synchronous/__init__.py | 0 .../pymongo/synchronous/aggregation.py | 254 + .../site-packages/pymongo/synchronous/auth.py | 450 + .../pymongo/synchronous/auth_aws.py | 100 + .../pymongo/synchronous/auth_oidc.py | 303 + .../site-packages/pymongo/synchronous/bulk.py | 751 ++ .../pymongo/synchronous/change_stream.py | 494 + .../pymongo/synchronous/client_bulk.py | 754 ++ .../pymongo/synchronous/client_session.py | 1184 +++ .../pymongo/synchronous/collection.py | 3659 +++++++ .../pymongo/synchronous/command_cursor.py | 472 + .../pymongo/synchronous/cursor.py | 1371 +++ .../pymongo/synchronous/database.py | 1462 +++ .../pymongo/synchronous/encryption.py | 1279 +++ .../pymongo/synchronous/helpers.py | 102 + .../pymongo/synchronous/mongo_client.py | 2968 ++++++ .../pymongo/synchronous/monitor.py | 543 ++ .../pymongo/synchronous/network.py | 298 + .../site-packages/pymongo/synchronous/pool.py | 1458 +++ .../pymongo/synchronous/server.py | 383 + .../pymongo/synchronous/settings.py | 175 + .../pymongo/synchronous/srv_resolver.py | 155 + .../pymongo/synchronous/topology.py | 1135 +++ .../pymongo/synchronous/uri_parser.py | 193 + .../pymongo/topology_description.py | 736 ++ .../site-packages/pymongo/typings.py | 78 + .../site-packages/pymongo/uri_parser.py | 44 + .../pymongo/uri_parser_shared.py | 614 ++ .../site-packages/pymongo/write_concern.py | 144 + .../INSTALLER | 1 + .../LICENSE | 54 + .../METADATA | 204 + .../RECORD | 44 + .../WHEEL | 6 + .../top_level.txt | 1 + .../zip-safe | 1 + .../six-1.17.0.dist-info/INSTALLER | 1 + .../six-1.17.0.dist-info/LICENSE | 18 + .../six-1.17.0.dist-info/METADATA | 43 + .../site-packages/six-1.17.0.dist-info/RECORD | 8 + .../site-packages/six-1.17.0.dist-info/WHEEL | 6 + .../six-1.17.0.dist-info/top_level.txt | 1 + .../lib/python3.12/site-packages/six.py | 1003 ++ .../tornado-6.5.4.dist-info/INSTALLER | 1 + .../tornado-6.5.4.dist-info/METADATA | 84 + .../tornado-6.5.4.dist-info/RECORD | 172 + .../tornado-6.5.4.dist-info/REQUESTED | 0 .../tornado-6.5.4.dist-info/WHEEL | 8 + .../tornado-6.5.4.dist-info/licenses/LICENSE | 202 + .../tornado-6.5.4.dist-info/top_level.txt | 1 + .../site-packages/tornado/__init__.py | 67 + .../site-packages/tornado/__init__.pyi | 33 + .../site-packages/tornado/_locale_data.py | 80 + .../python3.12/site-packages/tornado/auth.py | 1235 +++ .../site-packages/tornado/autoreload.py | 350 + .../site-packages/tornado/concurrent.py | 275 + .../site-packages/tornado/curl_httpclient.py | 590 ++ .../site-packages/tornado/escape.py | 401 + .../python3.12/site-packages/tornado/gen.py | 903 ++ .../site-packages/tornado/http1connection.py | 889 ++ .../site-packages/tornado/httpclient.py | 790 ++ .../site-packages/tornado/httpserver.py | 410 + .../site-packages/tornado/httputil.py | 1296 +++ .../site-packages/tornado/ioloop.py | 986 ++ .../site-packages/tornado/iostream.py | 1617 ++++ .../site-packages/tornado/locale.py | 587 ++ .../python3.12/site-packages/tornado/locks.py | 570 ++ .../python3.12/site-packages/tornado/log.py | 343 + .../site-packages/tornado/netutil.py | 670 ++ .../site-packages/tornado/options.py | 745 ++ .../tornado/platform/__init__.py | 0 .../site-packages/tornado/platform/asyncio.py | 753 ++ .../tornado/platform/caresresolver.py | 94 + .../site-packages/tornado/platform/twisted.py | 64 + .../site-packages/tornado/process.py | 371 + .../python3.12/site-packages/tornado/py.typed | 0 .../site-packages/tornado/queues.py | 422 + .../site-packages/tornado/routing.py | 728 ++ .../tornado/simple_httpclient.py | 702 ++ .../site-packages/tornado/speedups.abi3.so | Bin 0 -> 21128 bytes .../site-packages/tornado/speedups.pyi | 1 + .../site-packages/tornado/tcpclient.py | 332 + .../site-packages/tornado/tcpserver.py | 390 + .../site-packages/tornado/template.py | 1045 ++ .../site-packages/tornado/test/__init__.py | 0 .../site-packages/tornado/test/__main__.py | 11 + .../tornado/test/asyncio_test.py | 298 + .../site-packages/tornado/test/auth_test.py | 608 ++ .../tornado/test/autoreload_test.py | 268 + .../tornado/test/circlerefs_test.py | 217 + .../tornado/test/concurrent_test.py | 231 + .../tornado/test/csv_translations/fr_FR.csv | 1 + .../tornado/test/curl_httpclient_test.py | 125 + .../site-packages/tornado/test/escape_test.py | 324 + .../site-packages/tornado/test/gen_test.py | 1123 +++ .../fr_FR/LC_MESSAGES/tornado_test.mo | Bin 0 -> 665 bytes .../fr_FR/LC_MESSAGES/tornado_test.po | 47 + .../tornado/test/http1connection_test.py | 61 + .../tornado/test/httpclient_test.py | 957 ++ .../tornado/test/httpserver_test.py | 1535 +++ .../tornado/test/httputil_test.py | 711 ++ .../site-packages/tornado/test/import_test.py | 68 + .../site-packages/tornado/test/ioloop_test.py | 812 ++ .../tornado/test/iostream_test.py | 1421 +++ .../site-packages/tornado/test/locale_test.py | 159 + .../site-packages/tornado/test/locks_test.py | 535 + .../site-packages/tornado/test/log_test.py | 233 + .../tornado/test/netutil_test.py | 210 + .../tornado/test/options_test.cfg | 7 + .../tornado/test/options_test.py | 328 + .../tornado/test/options_test_types.cfg | 12 + .../tornado/test/options_test_types_str.cfg | 9 + .../tornado/test/process_test.py | 264 + .../site-packages/tornado/test/queues_test.py | 431 + .../tornado/test/resolve_test_helper.py | 10 + .../tornado/test/routing_test.py | 276 + .../site-packages/tornado/test/runtests.py | 223 + .../tornado/test/simple_httpclient_test.py | 866 ++ .../tornado/test/static/dir/index.html | 1 + .../tornado/test/static/robots.txt | 2 + .../tornado/test/static/sample.xml | 23 + .../tornado/test/static/sample.xml.bz2 | Bin 0 -> 285 bytes .../tornado/test/static/sample.xml.gz | Bin 0 -> 264 bytes .../site-packages/tornado/test/static_foo.txt | 2 + .../tornado/test/tcpclient_test.py | 434 + .../tornado/test/tcpserver_test.py | 230 + .../tornado/test/template_test.py | 528 + .../tornado/test/templates/utf8.html | 1 + .../site-packages/tornado/test/test.crt | 18 + .../site-packages/tornado/test/test.key | 28 + .../tornado/test/testing_test.py | 340 + .../tornado/test/twisted_test.py | 70 + .../site-packages/tornado/test/util.py | 126 + .../site-packages/tornado/test/util_test.py | 373 + .../site-packages/tornado/test/web_test.py | 3352 +++++++ .../tornado/test/websocket_test.py | 989 ++ .../site-packages/tornado/test/wsgi_test.py | 116 + .../site-packages/tornado/testing.py | 866 ++ .../python3.12/site-packages/tornado/util.py | 445 + .../python3.12/site-packages/tornado/web.py | 3803 ++++++++ .../site-packages/tornado/websocket.py | 1725 ++++ .../python3.12/site-packages/tornado/wsgi.py | 268 + .../ujson-5.11.0.dist-info/INSTALLER | 1 + .../ujson-5.11.0.dist-info/METADATA | 202 + .../ujson-5.11.0.dist-info/RECORD | 9 + .../ujson-5.11.0.dist-info/REQUESTED | 0 .../ujson-5.11.0.dist-info/WHEEL | 6 + .../licenses/LICENSE.txt | 114 + .../ujson-5.11.0.dist-info/top_level.txt | 2 + .../site-packages/ujson-stubs/__init__.pyi | 56 + .../ujson.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 106280 bytes ros2_ws/venv_rosbridge/lib64 | 1 + ros2_ws/venv_rosbridge/pyvenv.cfg | 5 + scripts/install_rosbridge_from_source.sh | 67 + scripts/onboard_robot.sh | 76 + scripts/run_demo_native.sh | 39 + scripts/run_robot_rosbridge.sh | 36 + scripts/setup_gateway_plugin.sh | 121 + scripts/setup_robot.sh | 113 + scripts/setup_workspace.sh | 1 + 1034 files changed, 357297 insertions(+), 3 deletions(-) create mode 100644 docs/robot-setup.md create mode 100644 extensions/openclaw-plugin/package-lock.json create mode 100644 package-lock.json create mode 120000 ros2_ws/src/rosapi create mode 120000 ros2_ws/src/rosapi_msgs create mode 120000 ros2_ws/src/rosbridge_library create mode 120000 ros2_ws/src/rosbridge_msgs create mode 120000 ros2_ws/src/rosbridge_server create mode 120000 ros2_ws/src/rosbridge_suite create mode 160000 ros2_ws/src/rosbridge_suite_repo create mode 100644 ros2_ws/venv_rosbridge/bin/Activate.ps1 create mode 100644 ros2_ws/venv_rosbridge/bin/activate create mode 100644 ros2_ws/venv_rosbridge/bin/activate.csh create mode 100644 ros2_ws/venv_rosbridge/bin/activate.fish create mode 100755 ros2_ws/venv_rosbridge/bin/cbor2 create mode 100755 ros2_ws/venv_rosbridge/bin/pip create mode 100755 ros2_ws/venv_rosbridge/bin/pip3 create mode 100755 ros2_ws/venv_rosbridge/bin/pip3.12 create mode 120000 ros2_ws/venv_rosbridge/bin/python create mode 120000 ros2_ws/venv_rosbridge/bin/python3 create mode 120000 ros2_ws/venv_rosbridge/bin/python3.12 create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/_cbor2.cpython-312-x86_64-linux-gnu.so create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson-0.5.10.dist-info/INSTALLER create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson-0.5.10.dist-info/METADATA create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson-0.5.10.dist-info/RECORD create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson-0.5.10.dist-info/REQUESTED create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson-0.5.10.dist-info/WHEEL create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson-0.5.10.dist-info/top_level.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/__init__.py create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/_cbson.cpython-310-x86_64-linux-gnu.so create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/_cbson.cpython-311-x86_64-linux-gnu.so create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/_cbson.cpython-312-x86_64-linux-gnu.so create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/_cbson.cpython-39-x86_64-linux-gnu.so create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/_cbsonmodule.c create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/_cbsonmodule.h create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/_helpers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/binary.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/bson-endian.h create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/buffer.c create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/buffer.h create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/code.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/codec.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/codec_options.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/datetime_ms.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/dbref.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/decimal128.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/errors.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/int64.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/json_util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/max_key.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/min_key.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/network.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/objectid.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/py.typed create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/py3compat.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/raw_bson.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/regex.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/son.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/time64.c create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/time64.h create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/time64_config.h create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/time64_limits.h create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/timestamp.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/typings.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/bson/tz_util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2-5.8.0.dist-info/INSTALLER create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2-5.8.0.dist-info/METADATA create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2-5.8.0.dist-info/RECORD create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2-5.8.0.dist-info/REQUESTED create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2-5.8.0.dist-info/WHEEL create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2-5.8.0.dist-info/entry_points.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2-5.8.0.dist-info/licenses/LICENSE.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2-5.8.0.dist-info/top_level.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2/_decoder.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2/_encoder.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2/_types.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2/decoder.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2/encoder.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2/py.typed create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2/tool.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/cbor2/types.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/_common.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/_version.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/easter.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/parser/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/parser/_parser.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/parser/isoparser.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/relativedelta.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/rrule.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/tz/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/tz/_common.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/tz/_factories.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/tz/tz.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/tz/win.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/tzwin.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/utils.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/zoneinfo/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dateutil/zoneinfo/rebuild.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/_asyncbackend.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/_asyncio_backend.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/_ddr.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/_features.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/_immutable_ctx.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/_no_ssl.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/_tls_util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/_trio_backend.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/asyncbackend.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/asyncquery.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/asyncresolver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/btree.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/btreezone.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/dnssec.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/dnssecalgs/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/dnssecalgs/base.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/dnssecalgs/cryptography.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/dnssecalgs/dsa.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/dnssecalgs/ecdsa.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/dnssecalgs/eddsa.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/dnssecalgs/rsa.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/dnssectypes.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/e164.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/edns.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/entropy.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/enum.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/exception.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/flags.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/grange.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/immutable.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/inet.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/ipv4.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/ipv6.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/message.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/name.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/namedict.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/nameserver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/node.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/opcode.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/py.typed create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/query.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/quic/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/quic/_asyncio.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/quic/_common.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/quic/_sync.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/quic/_trio.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rcode.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdata.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdataclass.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdataset.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdatatype.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/AFSDB.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/AMTRELAY.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/AVC.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/CAA.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/CDNSKEY.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/CDS.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/CERT.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/CNAME.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/CSYNC.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/DLV.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/DNAME.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/DNSKEY.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/DS.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/DSYNC.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/EUI48.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/EUI64.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/GPOS.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/HINFO.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/HIP.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/ISDN.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/L32.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/L64.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/LOC.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/LP.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/MX.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/NID.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/NINFO.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/NS.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/NSEC.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/NSEC3.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/NSEC3PARAM.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/OPENPGPKEY.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/OPT.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/PTR.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/RESINFO.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/RP.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/RRSIG.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/RT.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/SMIMEA.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/SOA.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/SPF.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/SSHFP.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/TKEY.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/TLSA.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/TSIG.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/TXT.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/URI.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/WALLET.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/X25.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/ZONEMD.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/ANY/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/CH/A.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/CH/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/A.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/AAAA.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/APL.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/DHCID.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/HTTPS.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/IPSECKEY.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/KX.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/NAPTR.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/NSAP.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/NSAP_PTR.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/PX.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/SRV.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/SVCB.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/WKS.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/IN/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/dnskeybase.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/dsbase.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/euibase.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/mxbase.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/nsbase.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/svcbbase.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/tlsabase.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/txtbase.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rdtypes/util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/renderer.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/resolver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/reversename.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/rrset.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/serial.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/set.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/tokenizer.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/transaction.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/tsig.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/tsigkeyring.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/ttl.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/update.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/version.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/versioned.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/win32util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/wire.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/xfr.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/zone.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/zonefile.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dns/zonetypes.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dnspython-2.8.0.dist-info/INSTALLER create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dnspython-2.8.0.dist-info/METADATA create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dnspython-2.8.0.dist-info/RECORD create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dnspython-2.8.0.dist-info/WHEEL create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/dnspython-2.8.0.dist-info/licenses/LICENSE create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/gridfs/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/gridfs/asynchronous/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/gridfs/asynchronous/grid_file.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/gridfs/errors.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/gridfs/grid_file.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/gridfs/grid_file_shared.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/gridfs/py.typed create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/gridfs/synchronous/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/gridfs/synchronous/grid_file.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip-24.0.dist-info/AUTHORS.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip-24.0.dist-info/INSTALLER create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip-24.0.dist-info/LICENSE.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip-24.0.dist-info/METADATA create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip-24.0.dist-info/RECORD create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip-24.0.dist-info/REQUESTED create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip-24.0.dist-info/WHEEL create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip-24.0.dist-info/entry_points.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip-24.0.dist-info/top_level.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/__main__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/__pip-runner__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/build_env.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cache.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/base_command.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/command_context.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/main.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/main_parser.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/parser.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/req_command.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/spinners.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/cli/status_codes.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/cache.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/check.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/completion.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/configuration.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/debug.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/download.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/freeze.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/hash.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/help.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/index.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/inspect.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/install.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/list.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/search.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/show.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/uninstall.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/commands/wheel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/configuration.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/distributions/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/distributions/base.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/distributions/installed.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/distributions/wheel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/exceptions.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/index/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/index/collector.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/index/package_finder.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/index/sources.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/locations/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/locations/_distutils.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/locations/base.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/main.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/metadata/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/metadata/_json.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/metadata/base.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_compat.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_envs.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/candidate.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/direct_url.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/format_control.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/index.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/installation_report.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/link.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/scheme.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/search_scope.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/target_python.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/models/wheel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/network/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/network/auth.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/network/cache.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/network/download.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/network/session.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/network/utils.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/build/build_tracker.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_editable.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_editable.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/check.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/freeze.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/operations/prepare.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/pyproject.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/req/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/req/constructors.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/req/req_file.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/req/req_install.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/req/req_set.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/base.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/self_outdated_check.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/_jaraco_text.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/_log.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/appdirs.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/compat.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/datetime.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/deprecation.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/egg_link.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/encoding.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/filesystem.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/filetypes.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/glibc.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/hashes.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/logging.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/misc.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/models.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/packaging.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/subprocess.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/unpacking.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/urls.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/utils/wheel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/vcs/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/vcs/git.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/vcs/subversion.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_internal/wheel_builder.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/certifi/core.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachinedict.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/enums.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/johabfreq.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/johabprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/macromanprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/resultdict.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/utf1632prober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/chardet/version.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansi_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/tests/initialise_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/tests/isatty_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/tests/utils.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/tests/winterm_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/win32.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/compat.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/database.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/index.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/locators.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/markers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/resources.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/version.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distro/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distro/__main__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/distro/distro.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/idna/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/idna/codec.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/idna/compat.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/idna/core.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/idna/intranges.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/idna/package_data.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/tags.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/utils.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/packaging/version.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/__main__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/cmdline.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/console.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/filter.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatter.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/_mapping.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/bbcode.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/groff.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/html.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/img.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/irc.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/latex.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/other.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/rtf.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/svg.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal256.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/lexer.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/_mapping.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/python.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/modeline.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/plugin.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/regexopt.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/scanner.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/sphinxext.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/style.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/token.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/unistring.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pygments/util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/actions.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/common.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/core.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/exceptions.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/helpers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/results.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/testing.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/unicode.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyparsing/util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_compat.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/__version__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/adapters.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/api.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/auth.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/certs.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/compat.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/cookies.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/help.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/hooks.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/models.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/packages.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/structures.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/requests/utils.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/__main__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_cell_widths.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_codes.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_replace.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_export_format.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_extension.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_fileno.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_inspect.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_log_render.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_loop.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_null_file.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_palettes.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_pick.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_ratio.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_spinners.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_stack.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_timer.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_win32_console.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_windows.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_windows_renderer.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/_wrap.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/abc.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/align.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/ansi.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/bar.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/box.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/cells.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/color.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/color_triplet.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/columns.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/console.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/constrain.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/containers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/control.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/default_styles.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/diagnose.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/emoji.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/errors.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/file_proxy.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/filesize.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/highlighter.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/json.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/jupyter.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/layout.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/live.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/live_render.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/logging.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/markup.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/measure.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/padding.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/pager.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/palette.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/panel.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/pretty.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/progress.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/progress_bar.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/prompt.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/protocol.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/region.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/repr.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/rule.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/scope.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/screen.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/segment.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/spinner.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/status.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/style.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/styled.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/syntax.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/table.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/terminal_theme.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/text.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/theme.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/themes.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/traceback.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/rich/tree.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/six.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/_asyncio.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/_utils.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/after.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/before.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/before_sleep.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/nap.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/retry.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/stop.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/tornadoweb.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tomli/_re.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/tomli/_types.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/truststore/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/truststore/_api.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/truststore/_macos.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/truststore/_openssl.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/truststore/_ssl_constants.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/truststore/_windows.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/typing_extensions.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/request.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/response.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/vendor.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pip/py.typed create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo-4.16.0.dist-info/INSTALLER create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo-4.16.0.dist-info/METADATA create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo-4.16.0.dist-info/RECORD create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo-4.16.0.dist-info/REQUESTED create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo-4.16.0.dist-info/WHEEL create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo-4.16.0.dist-info/licenses/LICENSE create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_asyncio_lock.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_asyncio_task.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_azure_helpers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_client_bulk_shared.py create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_cmessage.cpython-310-x86_64-linux-gnu.so create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_cmessage.cpython-311-x86_64-linux-gnu.so create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_cmessage.cpython-312-x86_64-linux-gnu.so create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_cmessage.cpython-39-x86_64-linux-gnu.so create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_cmessagemodule.c create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_csot.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_gcp_helpers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/_version.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/aggregation.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/auth.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/auth_aws.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/auth_oidc.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/bulk.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/change_stream.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/client_bulk.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/client_session.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/collection.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/command_cursor.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/cursor.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/database.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/encryption.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/helpers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/mongo_client.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/monitor.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/network.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/pool.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/server.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/settings.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/srv_resolver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/topology.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/asynchronous/uri_parser.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/auth.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/auth_oidc.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/auth_oidc_shared.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/auth_shared.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/bulk_shared.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/change_stream.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/client_options.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/client_session.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/collation.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/collection.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/command_cursor.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/common.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/compression_support.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/cursor.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/cursor_shared.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/daemon.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/database.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/database_shared.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/driver_info.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/encryption.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/encryption_options.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/errors.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/event_loggers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/hello.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/helpers_shared.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/lock.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/logger.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/max_staleness_selectors.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/message.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/mongo_client.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/monitoring.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/network_layer.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/ocsp_cache.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/ocsp_support.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/operations.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/periodic_executor.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/pool.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/pool_options.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/pool_shared.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/py.typed create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/pyopenssl_context.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/read_concern.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/read_preferences.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/response.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/results.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/saslprep.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/server_api.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/server_description.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/server_selectors.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/server_type.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/socket_checker.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/ssl_context.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/ssl_support.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/aggregation.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/auth.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/auth_aws.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/auth_oidc.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/bulk.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/change_stream.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/client_bulk.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/client_session.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/collection.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/command_cursor.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/cursor.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/database.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/encryption.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/helpers.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/mongo_client.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/monitor.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/network.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/pool.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/server.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/settings.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/srv_resolver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/topology.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/synchronous/uri_parser.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/topology_description.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/typings.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/uri_parser.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/uri_parser_shared.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/pymongo/write_concern.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/INSTALLER create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/LICENSE create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/METADATA create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/RECORD create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/WHEEL create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/top_level.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/zip-safe create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/six-1.17.0.dist-info/INSTALLER create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/six-1.17.0.dist-info/LICENSE create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/six-1.17.0.dist-info/METADATA create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/six-1.17.0.dist-info/RECORD create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/six-1.17.0.dist-info/WHEEL create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/six-1.17.0.dist-info/top_level.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/six.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado-6.5.4.dist-info/INSTALLER create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado-6.5.4.dist-info/METADATA create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado-6.5.4.dist-info/RECORD create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado-6.5.4.dist-info/REQUESTED create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado-6.5.4.dist-info/WHEEL create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado-6.5.4.dist-info/licenses/LICENSE create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado-6.5.4.dist-info/top_level.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/__init__.pyi create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/_locale_data.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/auth.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/autoreload.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/concurrent.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/curl_httpclient.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/escape.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/gen.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/http1connection.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/httpclient.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/httpserver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/httputil.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/ioloop.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/iostream.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/locale.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/locks.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/log.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/netutil.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/options.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/platform/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/platform/asyncio.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/platform/caresresolver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/platform/twisted.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/process.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/py.typed create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/queues.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/routing.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/simple_httpclient.py create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/speedups.abi3.so create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/speedups.pyi create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/tcpclient.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/tcpserver.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/template.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/__init__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/__main__.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/asyncio_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/auth_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/autoreload_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/circlerefs_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/concurrent_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/csv_translations/fr_FR.csv create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/curl_httpclient_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/escape_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/gen_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/gettext_translations/fr_FR/LC_MESSAGES/tornado_test.mo create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/gettext_translations/fr_FR/LC_MESSAGES/tornado_test.po create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/http1connection_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/httpclient_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/httpserver_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/httputil_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/import_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/ioloop_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/iostream_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/locale_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/locks_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/log_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/netutil_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/options_test.cfg create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/options_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/options_test_types.cfg create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/options_test_types_str.cfg create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/process_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/queues_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/resolve_test_helper.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/routing_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/runtests.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/simple_httpclient_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/static/dir/index.html create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/static/robots.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/static/sample.xml create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/static/sample.xml.bz2 create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/static/sample.xml.gz create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/static_foo.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/tcpclient_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/tcpserver_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/template_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/templates/utf8.html create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/test.crt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/test.key create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/testing_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/twisted_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/util_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/web_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/websocket_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/test/wsgi_test.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/testing.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/util.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/web.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/websocket.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/tornado/wsgi.py create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/ujson-5.11.0.dist-info/INSTALLER create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/ujson-5.11.0.dist-info/METADATA create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/ujson-5.11.0.dist-info/RECORD create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/ujson-5.11.0.dist-info/REQUESTED create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/ujson-5.11.0.dist-info/WHEEL create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/ujson-5.11.0.dist-info/licenses/LICENSE.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/ujson-5.11.0.dist-info/top_level.txt create mode 100644 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/ujson-stubs/__init__.pyi create mode 100755 ros2_ws/venv_rosbridge/lib/python3.12/site-packages/ujson.cpython-312-x86_64-linux-gnu.so create mode 120000 ros2_ws/venv_rosbridge/lib64 create mode 100644 ros2_ws/venv_rosbridge/pyvenv.cfg create mode 100755 scripts/install_rosbridge_from_source.sh create mode 100755 scripts/onboard_robot.sh create mode 100755 scripts/run_demo_native.sh create mode 100755 scripts/run_robot_rosbridge.sh create mode 100755 scripts/setup_gateway_plugin.sh create mode 100755 scripts/setup_robot.sh diff --git a/README.md b/README.md index 369294a..dfea5a9 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,12 @@ If you don’t have ROS on your host (e.g. macOS with only OpenClaw and Docker): 5. Start OpenClaw and use your configured messaging channel; the plugin will talk to the simulation in Docker over WebSocket. +### Run on your own robot (Ubuntu + ROS2) + +**New robot?** Use the onboarding wizard: `./scripts/onboard_robot.sh` (run from the repo root). It guides you through robot-side and/or gateway-side setup. + +For manual steps, see **[Robot Setup Guide](docs/robot-setup.md)**. Quick path: `./scripts/setup_robot.sh` on the robot, `./scripts/setup_gateway_plugin.sh` where OpenClaw runs, then `./scripts/run_demo_native.sh` to start the bridges. + ### Try It Send a message to your robot: diff --git a/docs/robot-setup.md b/docs/robot-setup.md new file mode 100644 index 0000000..71fcfe0 --- /dev/null +++ b/docs/robot-setup.md @@ -0,0 +1,245 @@ +# RosClaw Robot Setup Guide + +This guide gets the RosClaw project running on your robot (Ubuntu + ROS2 + OpenClaw) for testing and demos. + +## Onboarding (quick path) + +For a **new robot**, use the setup scripts after cloning the repo: + +```bash +git clone https://github.com/chrismatthieu/rosclaw.git +cd rosclaw +``` + +- **Interactive wizard** (asks robot vs gateway, then runs the right steps): + ```bash + ./scripts/onboard_robot.sh + ``` + +- **Robot only** (run on the robot): + ```bash + ./scripts/setup_robot.sh + ``` + Optionally: `--ros-distro jazzy` or `humble`, `--skip-apt` to skip apt and build rosbridge from source. + +- **Gateway only** (run where OpenClaw runs): + ```bash + ./scripts/setup_gateway_plugin.sh + ``` + Optionally: `--rosbridge-url ws://ROBOT_IP:9090`, `--robot-namespace YOUR_NAMESPACE` to document config. + +Then start the bridges on the robot with `./scripts/run_demo_native.sh` and restart the OpenClaw gateway. See the rest of this doc for manual steps and troubleshooting. + +--- + +## Two ways to run it + +| Setup | OpenClaw runs on | Robot runs | Use case | +|-------|------------------|------------|----------| +| **Mode A** (same machine) | The robot | ROS2 + (optional) rosbridge on localhost | Single robot, all-in-one demo | +| **Mode B** (network) | Your laptop or server | ROS2 + rosbridge_server | Dev/testing, multi-robot | + +Choose **Mode A** if OpenClaw is installed on the robot. Choose **Mode B** if OpenClaw runs on another machine and connects to the robot over the network. + +--- + +## Prerequisites on the robot + +- Ubuntu (22.04 or 24.04 recommended) +- ROS2 **Humble** or **Jazzy** (match your existing install) +- (For Mode A) OpenClaw installed on the robot +- (For Mode B) Robot and OpenClaw machine on the same network + +--- + +## Step 1: Clone and prepare the repo on the robot + +On the robot (or on your dev machine if you’ll copy the built workspace to the robot): + +```bash +cd ~ # or your preferred path +git clone https://github.com/chrismatthieu/rosclaw.git +cd rosclaw +``` + +Use `--ros-distro` to match your ROS2 install (e.g. `humble` or `jazzy`): + +```bash +./scripts/setup_workspace.sh --ros-distro humble +``` + +If you already have ROS2 and only need the RosClaw workspace built: + +```bash +# Use your distro: humble, jazzy, or kilted +source /opt/ros/humble/setup.bash # or jazzy +cd rosclaw/ros2_ws +colcon build --symlink-install +source install/setup.bash +``` + +--- + +## Step 2: Install the rosbridge WebSocket server (required for plugin) + +The plugin talks to ROS2 via **rosbridge** over WebSocket. The robot needs the **rosbridge_suite** (which provides the WebSocket server). Install it for your distro: + +```bash +# Ubuntu/Debian — use your ROS2 distro (humble or jazzy) +sudo apt update +sudo apt install -y ros--rosbridge-suite +``` + +Example for Humble: + +```bash +sudo apt install -y ros-humble-rosbridge-suite +``` + +Example for Jazzy: + +```bash +sudo apt install -y ros-jazzy-rosbridge-suite +``` + +--- + +## Step 3: Run the robot-side stack + +Activate the workspace and start **rosbridge** (and optionally **rosclaw_discovery**). + +### Option A: Activate once, then run (recommended) + +```bash +cd /path/to/rosclaw +source scripts/activate_workspace.sh ros_env humble # or jazzy +``` + +In **one terminal**, start the rosbridge WebSocket server (port 9090): + +```bash +ros2 launch rosbridge_server rosbridge_websocket_launch.xml +``` + +In a **second terminal** (optional but useful for the AI agent), start the discovery node so the plugin knows your topics/services/actions: + +```bash +source /path/to/rosclaw/scripts/activate_workspace.sh ros_env humble +ros2 run rosclaw_discovery discovery_node +``` + +Keep both running while you use OpenClaw. + +### Option B: Use the launch script + +From the repo root: + +```bash +./scripts/run_robot_rosbridge.sh [humble|jazzy] +``` + +This sources the workspace and starts `rosbridge_server`. In another terminal, run the discovery node as above if you want it. + +--- + +## Step 4: Configure OpenClaw and the RosClaw plugin + +### If OpenClaw is on the robot (Mode A) + +1. Build the plugin (from the repo root, on the robot): + ```bash + cd /path/to/rosclaw + pnpm install + pnpm build + ``` +2. Install the plugin into OpenClaw: + ```bash + openclaw plugins install -l ./extensions/openclaw-plugin + ``` +3. In OpenClaw, set the RosClaw plugin config: + - **Transport mode:** `rosbridge` + - **Rosbridge URL:** `ws://localhost:9090` +4. Start OpenClaw and connect your messaging channel (Telegram, WhatsApp, etc.). The plugin will connect to rosbridge on localhost. + +### If OpenClaw is on another machine (Mode B) + +1. On your **laptop/server** where OpenClaw runs: + ```bash + cd /path/to/rosclaw + pnpm install + pnpm build + openclaw plugins install -l ./extensions/openclaw-plugin + ``` +2. Find the robot’s IP (on the robot run `hostname -I` or check your router). +3. In OpenClaw, set the RosClaw plugin config: + - **Transport mode:** `rosbridge` + - **Rosbridge URL:** `ws://:9090` + Example: `ws://192.168.1.50:9090` +4. Ensure the robot’s firewall allows TCP port **9090** (rosbridge): + ```bash + sudo ufw allow 9090/tcp + sudo ufw reload + ``` +5. Start OpenClaw and your messaging app; the plugin will connect to the robot at that URL. + +--- + +## Quick checks + +- **Rosbridge listening:** On the robot, with rosbridge running: + ```bash + ss -tlnp | grep 9090 + ``` + You should see something like `*:9090`. + +- **Discovery:** With discovery running, you can inspect what the agent will see: + ```bash + ros2 topic echo /rosclaw/capabilities --once + ``` + +- **Plugin connection:** In OpenClaw, after starting a chat, the plugin should connect to the robot; check OpenClaw logs for RosClaw connection messages. + +--- + +## Try a demo + +Once everything is running: + +1. Send a message to your bot, e.g. **“Move forward 1 meter”** (if your robot has `/cmd_vel`). +2. Or **“What do you see?”** if you have a camera topic. +3. Use **`/estop`** for emergency stop (bypasses the AI). + +--- + +## Troubleshooting + +| Issue | What to check | +|-------|----------------| +| Plugin won’t connect | Rosbridge URL correct? Robot IP (Mode B)? Firewall allows 9090? | +| “Package not found” (rosbridge_server) | Install `ros--rosbridge-suite` (Step 2). | +| “Package not found” (rosclaw_discovery) | Run `source scripts/activate_workspace.sh` and ensure `ros2_ws` is built. | +| Different ROS distro | Use `--ros-distro humble` or `jazzy` in `setup_workspace.sh` and when sourcing. | + +### 404 errors when installing rosbridge_suite + +If `sudo apt install ros-jazzy-rosbridge-suite` fails with **404 Not Found** (stale ROS or Ubuntu mirror): + +1. **Refresh and retry** + ```bash + sudo apt update + sudo apt install -y ros-jazzy-rosbridge-suite + ``` + +2. **If it still fails**, install **from source** so you don't depend on the broken packages: + ```bash + cd /home/ubuntu/Projects/rosclaw + ./scripts/install_rosbridge_from_source.sh jazzy + ``` + Then run rosbridge with: + ```bash + source /opt/ros/jazzy/setup.bash + source ros2_ws/install/setup.bash + ros2 launch rosbridge_server rosbridge_websocket_launch.xml + ``` + +For deployment with OpenClaw in the cloud and the robot behind NAT, see **Mode C** in [Architecture](architecture.md) (WebRTC + `rosclaw_agent` on the robot). diff --git a/extensions/openclaw-canvas/package.json b/extensions/openclaw-canvas/package.json index 58426aa..ddbebd5 100644 --- a/extensions/openclaw-canvas/package.json +++ b/extensions/openclaw-canvas/package.json @@ -22,7 +22,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/PlaiPin/rosclaw.git", + "url": "https://github.com/chrismatthieu/rosclaw.git", "directory": "extensions/openclaw-canvas" }, "author": "PlaiPin", diff --git a/extensions/openclaw-plugin/openclaw.plugin.json b/extensions/openclaw-plugin/openclaw.plugin.json index 95d15da..0aa6571 100644 --- a/extensions/openclaw-plugin/openclaw.plugin.json +++ b/extensions/openclaw-plugin/openclaw.plugin.json @@ -144,6 +144,11 @@ "label": "Robot Name", "placeholder": "Robot" }, + "robot.namespace": { + "label": "ROS2 Robot Namespace", + "description": "Namespace for this robot's topics (e.g. robot3946b404c33e4aa39a8d16deb1c5c593). cmd_vel will be /cmd_vel.", + "placeholder": "" + }, "safety.maxLinearVelocity": { "label": "Max Linear Velocity (m/s)", "advanced": true diff --git a/extensions/openclaw-plugin/package-lock.json b/extensions/openclaw-plugin/package-lock.json new file mode 100644 index 0000000..abf80b0 --- /dev/null +++ b/extensions/openclaw-plugin/package-lock.json @@ -0,0 +1,851 @@ +{ + "name": "@rosclaw/rosclaw", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@rosclaw/rosclaw", + "version": "0.0.1", + "license": "Apache-2.0", + "dependencies": { + "@sinclair/typebox": "^0.34.0", + "node-datachannel": "^0.12.0", + "ws": "^8.18.0", + "zod": "^3.24.0" + }, + "devDependencies": { + "@types/node": "^20.17.0", + "@types/ws": "^8.5.13", + "typescript": "^5.7.0" + }, + "optionalDependencies": { + "rclnodejs": "^1.8.1" + } + }, + "node_modules/@rclnodejs/ref-array-di": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rclnodejs/ref-array-di/-/ref-array-di-1.2.2.tgz", + "integrity": "sha512-BHslJ1wmmaiPQ2rPZrO9Du9Cd/eQjZ+N5T84poFZk9JFJkYatbtXALbjWTgoHWpl6Cvm415NfwsGc2xkjzFPxw==", + "license": "MIT", + "optional": true, + "dependencies": { + "array-index": "^1.0.0", + "debug": "^4.3.1" + } + }, + "node_modules/@rclnodejs/ref-struct-di": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rclnodejs/ref-struct-di/-/ref-struct-di-1.1.1.tgz", + "integrity": "sha512-UqFrk6tXEo3d6byHLUqsfJzONDZDUDU/g8fpkj2Xxy8CF0r7QRQ3wGyQxBS+GFzf7yByWBSddPhOj1EsGB0R3Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^4.3.1" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz", + "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/array-index": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz", + "integrity": "sha512-jesyNbBkLQgGZMSwA1FanaFjalb1mZUGxGeUEkSDidzgrbjBGhvizJkaItdhkt8eIHFOJC7nDsrXk+BaehTdRw==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^2.2.0", + "es6-symbol": "^3.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/array-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/array-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT", + "optional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "license": "ISC", + "optional": true, + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "license": "ISC", + "optional": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "license": "MIT", + "optional": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "license": "ISC", + "optional": true, + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "license": "ISC", + "optional": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "license": "MIT", + "optional": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "license": "ISC", + "optional": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT", + "optional": true + }, + "node_modules/foreachasync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", + "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw==", + "license": "Apache2", + "optional": true + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT", + "optional": true + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "license": "ISC", + "optional": true + }, + "node_modules/node-abi": { + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", + "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", + "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-datachannel": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/node-datachannel/-/node-datachannel-0.12.0.tgz", + "integrity": "sha512-pZ9FsVZpHdUKqyWynuCc9IBLkZPJMpDzpNk4YNPCizbIXHYifpYeWqSF35REHGIWi9JMCf11QzapsyQGo/Y4Ig==", + "hasInstallScript": true, + "license": "MPL 2.0", + "dependencies": { + "node-domexception": "^2.0.1", + "prebuild-install": "^7.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/node-domexception": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-2.0.2.tgz", + "integrity": "sha512-Qf9vHK9c5MGgUXj8SnucCIS4oEPuUstjRaMplLGeZpbWMfNV1rvEcXuwoXfN51dUfD1b4muPHPQtCx/5Dj/QAA==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rclnodejs": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/rclnodejs/-/rclnodejs-1.8.2.tgz", + "integrity": "sha512-3/zPbJ8FOhBbEgVsvVKWKBgBnfH+1mTZ1lOauA0Xkz9SdLn3abw0cR/hc//WT6sVGURyafTrylMxPEgjrjuJQw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@rclnodejs/ref-array-di": "^1.2.2", + "@rclnodejs/ref-struct-di": "^1.1.1", + "bindings": "^1.5.0", + "debug": "^4.4.0", + "json-bigint": "^1.0.0", + "node-addon-api": "^8.3.1", + "rxjs": "^7.8.1", + "walk": "^2.3.15" + }, + "bin": { + "generate-ros-messages": "scripts/generate_messages.js" + }, + "engines": { + "node": ">= 16.13.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "license": "ISC", + "optional": true + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/walk": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", + "integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==", + "license": "(MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "foreachasync": "^3.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/extensions/openclaw-plugin/package.json b/extensions/openclaw-plugin/package.json index 2465dc9..0668d99 100644 --- a/extensions/openclaw-plugin/package.json +++ b/extensions/openclaw-plugin/package.json @@ -27,7 +27,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/PlaiPin/rosclaw.git", + "url": "https://github.com/chrismatthieu/rosclaw.git", "directory": "extensions/openclaw-plugin" }, "author": "PlaiPin", diff --git a/extensions/openclaw-plugin/src/context/robot-context.ts b/extensions/openclaw-plugin/src/context/robot-context.ts index 68becc3..1e665c9 100644 --- a/extensions/openclaw-plugin/src/context/robot-context.ts +++ b/extensions/openclaw-plugin/src/context/robot-context.ts @@ -116,6 +116,18 @@ function buildRobotContext( return buildFallbackContext(name, namespace); } +const USER_INTERFACE_BLURB = ` +### User-facing interface (tell users this when they ask) +- **There is no separate robot GUI, dashboard, or URL.** The interface is this chat. +- The user controls the robot by typing here (e.g. "move forward 1 meter", "what do you see?", "check the battery"). You execute commands with the ros2_* tools and reply in chat. +- For telemetry: use \`ros2_subscribe_once\` or \`ros2_camera_snapshot\` and describe or show the result in your reply. There is no separate feed URL—you are the feed. If they want a "controller app," this chat is it. + +### OpenClaw "nodes" — do not confuse with RosClaw +- RosClaw is an **OpenClaw plugin** that runs inside this gateway. It connects to the robot via **rosbridge** (WebSocket to the robot's rosbridge_server). There is **no separate "RosClaw agent" or "node" to pair**. +- **Never tell users** to run \`openclaw node pair\`, \`openclaw nodes status\`, QR codes, or auth tokens for robot control. Those apply to OpenClaw's node/device pairing feature, not to RosClaw. +- If the user says "nodes status shows zero" or "how do I pair the robot": explain that the robot is already connected through the RosClaw plugin's rosbridge connection (configured in the plugin as e.g. ws://localhost:9090). No pairing step is required. If the plugin is loaded and rosbridge is running on the robot, the robot is connected—\`openclaw nodes status\` is irrelevant for RosClaw. +`.trim(); + function buildDynamicContext( name: string, topics: TopicInfo[], @@ -124,6 +136,7 @@ function buildDynamicContext( ): string { let context = `## Robot: ${name}\n\n`; context += `You are connected to a ROS2 robot named "${name}". You can control it using the ros2_* tools.\n\n`; + context += `${USER_INTERFACE_BLURB}\n\n`; if (topics.length > 0) { context += "### Available Topics\n"; @@ -171,6 +184,8 @@ function buildFallbackContext(name: string, namespace: string): string { You are connected to a ROS2 robot named "${name}". You can control it using the ros2_* tools. +${USER_INTERFACE_BLURB} + ### Available Topics - \`${prefix}cmd_vel\` (geometry_msgs/msg/Twist) — Velocity commands - \`${prefix}odom\` (nav_msgs/msg/Odometry) — Odometry data diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9c80caf --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17 @@ +{ + "name": "rosclaw", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "rosclaw", + "version": "0.0.1", + "license": "Apache-2.0", + "engines": { + "node": ">=20.0.0", + "pnpm": ">=9.0.0" + } + } + } +} diff --git a/package.json b/package.json index e360a6c..2907388 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "packageManager": "pnpm@9.15.4", "repository": { "type": "git", - "url": "https://github.com/PlaiPin/rosclaw.git" + "url": "https://github.com/chrismatthieu/rosclaw.git" }, "author": "PlaiPin", "license": "Apache-2.0" diff --git a/ros2_ws/src/rosapi b/ros2_ws/src/rosapi new file mode 120000 index 0000000..2cf93fb --- /dev/null +++ b/ros2_ws/src/rosapi @@ -0,0 +1 @@ +rosbridge_suite_repo/rosapi \ No newline at end of file diff --git a/ros2_ws/src/rosapi_msgs b/ros2_ws/src/rosapi_msgs new file mode 120000 index 0000000..5380bac --- /dev/null +++ b/ros2_ws/src/rosapi_msgs @@ -0,0 +1 @@ +rosbridge_suite_repo/rosapi_msgs \ No newline at end of file diff --git a/ros2_ws/src/rosbridge_library b/ros2_ws/src/rosbridge_library new file mode 120000 index 0000000..414972e --- /dev/null +++ b/ros2_ws/src/rosbridge_library @@ -0,0 +1 @@ +rosbridge_suite_repo/rosbridge_library \ No newline at end of file diff --git a/ros2_ws/src/rosbridge_msgs b/ros2_ws/src/rosbridge_msgs new file mode 120000 index 0000000..67ea36e --- /dev/null +++ b/ros2_ws/src/rosbridge_msgs @@ -0,0 +1 @@ +rosbridge_suite_repo/rosbridge_msgs \ No newline at end of file diff --git a/ros2_ws/src/rosbridge_server b/ros2_ws/src/rosbridge_server new file mode 120000 index 0000000..f33a862 --- /dev/null +++ b/ros2_ws/src/rosbridge_server @@ -0,0 +1 @@ +rosbridge_suite_repo/rosbridge_server \ No newline at end of file diff --git a/ros2_ws/src/rosbridge_suite b/ros2_ws/src/rosbridge_suite new file mode 120000 index 0000000..6cb2b45 --- /dev/null +++ b/ros2_ws/src/rosbridge_suite @@ -0,0 +1 @@ +rosbridge_suite_repo/rosbridge_suite \ No newline at end of file diff --git a/ros2_ws/src/rosbridge_suite_repo b/ros2_ws/src/rosbridge_suite_repo new file mode 160000 index 0000000..abada43 --- /dev/null +++ b/ros2_ws/src/rosbridge_suite_repo @@ -0,0 +1 @@ +Subproject commit abada43955cc0e9a1423bbca929f778a351d77b6 diff --git a/ros2_ws/venv_rosbridge/bin/Activate.ps1 b/ros2_ws/venv_rosbridge/bin/Activate.ps1 new file mode 100644 index 0000000..b49d77b --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/Activate.ps1 @@ -0,0 +1,247 @@ +<# +.Synopsis +Activate a Python virtual environment for the current PowerShell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +https://go.microsoft.com/fwlink/?LinkID=135170 + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove VIRTUAL_ENV_PROMPT altogether. + if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) { + Remove-Item -Path env:VIRTUAL_ENV_PROMPT + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0, 1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} +else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} +else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } + $env:VIRTUAL_ENV_PROMPT = $Prompt +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/ros2_ws/venv_rosbridge/bin/activate b/ros2_ws/venv_rosbridge/bin/activate new file mode 100644 index 0000000..bcdd9c7 --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/activate @@ -0,0 +1,70 @@ +# This file must be used with "source bin/activate" *from bash* +# You cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # Call hash to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + hash -r 2> /dev/null + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + unset VIRTUAL_ENV_PROMPT + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +# on Windows, a path can contain colons and backslashes and has to be converted: +if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then + # transform D:\path\to\venv to /d/path/to/venv on MSYS + # and to /cygdrive/d/path/to/venv on Cygwin + export VIRTUAL_ENV=$(cygpath /home/ubuntu/Projects/rosclaw/ros2_ws/venv_rosbridge) +else + # use the path as-is + export VIRTUAL_ENV=/home/ubuntu/Projects/rosclaw/ros2_ws/venv_rosbridge +fi + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/"bin":$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + PS1='(venv_rosbridge) '"${PS1:-}" + export PS1 + VIRTUAL_ENV_PROMPT='(venv_rosbridge) ' + export VIRTUAL_ENV_PROMPT +fi + +# Call hash to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +hash -r 2> /dev/null diff --git a/ros2_ws/venv_rosbridge/bin/activate.csh b/ros2_ws/venv_rosbridge/bin/activate.csh new file mode 100644 index 0000000..82d8a79 --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/activate.csh @@ -0,0 +1,27 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. + +# Created by Davide Di Blasi . +# Ported to Python 3.3 venv by Andrew Svetlov + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV /home/ubuntu/Projects/rosclaw/ros2_ws/venv_rosbridge + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/"bin":$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = '(venv_rosbridge) '"$prompt" + setenv VIRTUAL_ENV_PROMPT '(venv_rosbridge) ' +endif + +alias pydoc python -m pydoc + +rehash diff --git a/ros2_ws/venv_rosbridge/bin/activate.fish b/ros2_ws/venv_rosbridge/bin/activate.fish new file mode 100644 index 0000000..4f3ac64 --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/activate.fish @@ -0,0 +1,69 @@ +# This file must be used with "source /bin/activate.fish" *from fish* +# (https://fishshell.com/). You cannot run it directly. + +function deactivate -d "Exit virtual environment and return to normal shell environment" + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + set -e _OLD_FISH_PROMPT_OVERRIDE + # prevents error when using nested fish instances (Issue #93858) + if functions -q _old_fish_prompt + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + end + + set -e VIRTUAL_ENV + set -e VIRTUAL_ENV_PROMPT + if test "$argv[1]" != "nondestructive" + # Self-destruct! + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV /home/ubuntu/Projects/rosclaw/ros2_ws/venv_rosbridge + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/"bin $PATH + +# Unset PYTHONHOME if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # fish uses a function instead of an env var to generate the prompt. + + # Save the current fish_prompt function as the function _old_fish_prompt. + functions -c fish_prompt _old_fish_prompt + + # With the original prompt function renamed, we can override with our own. + function fish_prompt + # Save the return status of the last command. + set -l old_status $status + + # Output the venv prompt; color taken from the blue of the Python logo. + printf "%s%s%s" (set_color 4B8BBE) '(venv_rosbridge) ' (set_color normal) + + # Restore the return status of the previous command. + echo "exit $old_status" | . + # Output the original/"old" prompt. + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" + set -gx VIRTUAL_ENV_PROMPT '(venv_rosbridge) ' +end diff --git a/ros2_ws/venv_rosbridge/bin/cbor2 b/ros2_ws/venv_rosbridge/bin/cbor2 new file mode 100755 index 0000000..59594a2 --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/cbor2 @@ -0,0 +1,8 @@ +#!/home/ubuntu/Projects/rosclaw/ros2_ws/venv_rosbridge/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from cbor2.tool import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/ros2_ws/venv_rosbridge/bin/pip b/ros2_ws/venv_rosbridge/bin/pip new file mode 100755 index 0000000..865993a --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/pip @@ -0,0 +1,8 @@ +#!/home/ubuntu/Projects/rosclaw/ros2_ws/venv_rosbridge/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/ros2_ws/venv_rosbridge/bin/pip3 b/ros2_ws/venv_rosbridge/bin/pip3 new file mode 100755 index 0000000..865993a --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/pip3 @@ -0,0 +1,8 @@ +#!/home/ubuntu/Projects/rosclaw/ros2_ws/venv_rosbridge/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/ros2_ws/venv_rosbridge/bin/pip3.12 b/ros2_ws/venv_rosbridge/bin/pip3.12 new file mode 100755 index 0000000..865993a --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/pip3.12 @@ -0,0 +1,8 @@ +#!/home/ubuntu/Projects/rosclaw/ros2_ws/venv_rosbridge/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/ros2_ws/venv_rosbridge/bin/python b/ros2_ws/venv_rosbridge/bin/python new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/ros2_ws/venv_rosbridge/bin/python3 b/ros2_ws/venv_rosbridge/bin/python3 new file mode 120000 index 0000000..ae65fda --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/ros2_ws/venv_rosbridge/bin/python3.12 b/ros2_ws/venv_rosbridge/bin/python3.12 new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/ros2_ws/venv_rosbridge/bin/python3.12 @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/ros2_ws/venv_rosbridge/lib/python3.12/site-packages/_cbor2.cpython-312-x86_64-linux-gnu.so b/ros2_ws/venv_rosbridge/lib/python3.12/site-packages/_cbor2.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..e9eb6388a297e9ec1f5b850032079e016d8502d9 GIT binary patch literal 909368 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 R}Vh@dN|6RSQ1J244S}z?}xZORoRB47`1b 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

O4Nq^y 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

idCFxV73ICFgIFq z(`H4mQnnkxQlzm|ij9J@ej=qPoe!MB{kvETD#bqZyn@+cJf9JqSFUJPuS{dtt}vEM zn5S#{Q!A9BYgPICx>I||oDi4b)r7vP-vDVXv_(_{0+(!9pN7m5Xr@nha5a7UApcld zRv~kh1%qfixI&PXps}h|GATfCrG%d>oltPZvAUP9g(rbj+4_R{dm;#epHAzHB0Wc(I{7esRr#k)%0AycmjaF>(+l~Q$|z*)9$>U` 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%0D=j!V)Fe1!14MjacJ?K`Jogs?$*ZHXH8%G#84 zE!*dS2Ghz7n_IbIb1OFttsK0K80xLrhf zQZIdfVXfzo0s4=}OwvzFtBfJ@fai%PAiN0rvyx5lM!&#G1YtGzvyx5l9wgXLi~ zm2867dkK5DfW5miHmsD4Sr-jolxnxT0L$0M!FGO;RV85Wu5ABOlKiHG-d(xg%M31n zy}R-Sh{r&K1lYSP6;14ej2*A_qfH{k8MB{WUfKVAB)tDGV%;meECeL>^2({#IZF~L z&ZzxTUS2s_mGtt;8B~~VmGtt;r3+%ENMW?05-+b@ph|jq<+W6}T9vA8y=ht{dY0mF zbt-sh{=IX`+bQ>Q7F~ot8Vi?Ie7_|;H9w>y>_du&dW$8iExp$)h3|x2;Vo0)W}z_L z*|ZOZJ)bLWuGWhd+OpkgSqDa{b2zFbZBg#;(bA6GIFI*2r>p#v_$)UCa^|63b9BDHFBfZ*f$Ee8{nd1Bd3#T0jk~$ zxEmllZ(m-c=0fCZ#5kRr#{wJDMLzBZc#Tpx77LZ%{f#;bR(HdHCrB#wH;3{#q?=08 zCeMAdql(mqE-CF;?r_S5uKk}#(d#!%d*m!8k;-d7Ty>=V5BPrv?1OeCQM*n`FRchY znrUxS&+-0ITKCCIsr?y6-LaT1pg|>#|0d^pQkR0pB2%))H+Z84Xlz5`X^4A)&3!)2 zWJU^Y_Ddft*VSEwe9e8%#L`a(VeS)IOGz`;Txl;=(%feu6>bGK_gM<@3b47)e<5r) zSuaiOx?k^=lQH!i*Hh)SuDqC9H&e9nn|v4o^uCY8c!)8eL2QjrkaHEOOF+MuN$3)6 zTn15ki*+$_8^0p4D~Z2=#-B+1724NrG%H^FdMXKEEG^8E_%yZoXaR)HZ z^@UereaNZ2=jtl~a}K~!5IvXtNcAnh;xvXl6lv~cIH1ia zI*%rw0~%D)*hJ3rq@D(i+mcvm8CMwCX*Uv+V3|wB#@$IALhgZ}aXg6|A+7@hwaN0( zOxr?f<6W<2j~`OL4A_~EJnSifM{}2x)FPdEy<1^TkTgByhpIDA7jErx^?mvUaMOj% z(<-}pwt9B?UPYH)li%hBRi`CM{d)XO%j>qf3|+rdGz2{Zz?NN|$A#z{Tyb?U>7`Y& zrcB5f3Hhb8ZjZ|m(vzYK5HJ@ssHAaAa$Y3$ENI-0M5p&T9?-ZuiM=330E;VEW-=qS zT4-sK-dt|`4>eL3@&oWM0=wvG{m5C&sC-#lYM$8#xc zH6P%tLE{1v`g}<@CGM60h@C*6-F{%(L?$g#E-Xo}ty%MH_5K9d&V>JT2{@9(LWo;| z?Zb)HN|~rApk}@B2&z7&@iO4_PI7Jcb7+-mp7Bagmz(Ow$ z>*TnY>Nj4hh4z=N)Zg2dO-6UE@$;uIwtX1{*f+p;jn=J&-12-=918x=Yv>ivo$>`A zdcpV|=&yXiFJ3TxCd-TYf;Qf%x_N(4zM!iY=yjhba=RD_?NA z*U(d9&*uy7@&Y~c^>M!7886VY9Dn2smU)4;#jbv3u1o&y1+NTXhL2) z&YpGRmVLZn(7w%?NzbP_PwB;BQaS0?#C{JJ!~f|#-7yZ6%8N_uYEpR>=5h%Llgf)r zn`%n>QEd-a8|Fi|_I%t6k z+mA6$5T>1%mu$oB2A?oL1Yz2FdC9g0=^dMkfZfQw%$r_F7O#iOt4p=oBWcmL&u2JA zV9|DOh|$0$TLdhfC{pxf;3hsB@@!7O+qh`FH_5-KlZ5^2A)w8kk>`-wNceXJJSwolab=b>(>1a&RvK?8 ztug9awpz$?Oj9gpM?}`Pph`VENW40>q*8lF$d1P}gQTqnJep~U)VhH)N&i`@{T&H* z0Ubv>j{$Z8T?ug+unXw9OhBY+qW~_TPbEMX(3|kT2J8Y_<7*Z*fL%Z{AdUq|y~HyjHF4VvTj*Ys%w8ek~E6n94VUt>y}XvBY<_wE17^u<-6q%HAUTWF8pT$>y{-D zPbne4(&t;2`v5!gT-2YsB^EGrRkyrYsykH;lXaX)&C`H&OXMpjk;-?=5vrqZc?|wX zOk>CY(Jf7Xy*2dZGK~*j@Psy4J&FKbjW#JQPfl3BVn`Miq;`?VPpU0$3w0lw9tTjpP~-R?p387_@>2G~AZcFm{DvG(4Wu zaO(d@!=i=Z7&NN6!FYUK&u$HAPg&(5KT~4S^gY}&>WNvjUWF5MQV6lbH-w&d1H2)u zo>c0btj}^FUH>r%VfCcaW(unpe8;2+gs?g*hSdcgR!@y#_4*lI=e9)bX{A;YtlO}? z?t|!dS7>ya%#_yiOKs{n)ZWih^fh8X1ifD;G2wf5cY_A8HGV|S`=pkF#&1bXV?=u( zX#AbTD3(^X1C6cj;Q2%h=PMHSq2)=Lwn#1zIn>YBaKtjb0AHs^a@(x)BW(#9+B6o6AL180&R zSz2San`l8jY@-e79_&)^MNT}C6p&q*#X+}D%)S=BS-rTxhS;qj@ z+{nj10&niGvAMnA=?Rj`HZCkSSDj)3Di#!yNUax}yHlyd-O{Ktw>wfs0y}flAdUle z=61=N8L7G`fHOB=0(9oCg#QX)XYMJ8e<-0dSN@Ho1DrV*70;adbfm7b;cn9#M9Bx0 z>IM=y`l@Mt^)U}?%0AAPCXrexR-h@HP{Eoq2xVIVYsy531C&rxu7|i9B$X-u<0`6d z@2KNu^OR@H z*xGPrmp8V`r(P_xQBh_xNNnLotAW{GSycujerM4}W()L2fa2Wi8JTtSW-Ue5X?gzI z;$gXsf}FU@U}w#ic(=(d@lNJ&YRB?1QLQ1!3^^anT2F z^Jna~2WpeHRQ-3c^<#hMf;xnZzQ^*XLD`L`Lft{lYryvBk!YOHpMBFb*%dV2LgGV+ z_d&l!B#P`OYJ3u+TOm!>0gbPacm(2ZCEg=3x|k+Ag5AF+vGCl`0XzMN#27UGhS4?t zMB+PG-UN;1N7+kIW`iGx zXvS1p)$6A>IFp&iG154uxK>Jc_ipu1#^Ka_3-n%%M5Se#Yz`X4*0?@7kC3_#^s4;G zz^O~NY|oxglX>jWiVQHYZ44JN%byEqm-w!PO|f5>&c4$1`gNw-|0=D&$n-`8klHu~d}Tw8>d% z?x!czB-O9H5g$>0oR`z|>NYO&jCIoF+K}JkghX|^(8dz`?`W&FvbwLcUW16IjWyed zZO(Q+&h~0Q|J$w;9y(An)Cd3Ye5uKrX2;&^W6oW?7WsO!&epQK4ePQ} zn$!axBfcP<{rq*D^!eabW+dL^W@8eTUBGC9Z62&^6IalIp5+g|L0L+U- z1$1J26l`5wYu`mEkQZ45&pp7r$WIVIf(Egf7ir**We?CtUgREcCpDakXGI=m{(Xp) zN0|ZtbP$G*dgF_J1$+04s4n`$Pu``I+M#jNHB`7tigX7t)+yzvP)BxIt2#RUPs9JD z6jiQpCGqr6g}ZvAH&WiEN*y{~yBdObdBzJ@^e(zt<=(|czaM1B9H})!OOkY(V)^aZ z{I6-om$CVgvzSCG_LG|bRBV2`)@jlfB$eM?Nxu2LWW1~T_0OzNCvMwfn`iFl;AOB) z)a(PyVCO=dse}ynQ;20?4;k(xokC20~VKf)wEps?;; zQaIrU-Z}#RC&2DvuDWWPtPJcfW~^5FlYn>^b8lGp1RU!~*XEZ;aOBq2`(*8iRAwpL z6>GQCB_T^W2{|)?SxV$ACe2i6y}H_-Z;+*25C65&UzzDjysQ1{ti0oA;8)JBF3xbz za-9qoCSBCunPoU9A{52v`U>gZTsga1{KRL*d=XjYn8 z*l_Cb^MW$AZ+AfB8^zi?qQ*jpH2HL`!(THkIsr(#>2M{;JM24gD`2ijAC^k z9akBDL36(6@un{CN6l-V4$PVkZ{RJ})%c~$2yX?_6h@mDtD~Jo!}$_@FOf4)ANxY~ z)W!4lN*5cpRVVt9YCFIHE7ipvwggmm@|NrM`&6hc&VGmk3O`#6JjZMEXomXf*JAlU z$gm0M?Hv0pz$T#IKzspg0(yB?DN?JtOf3v9lK@RXH}04w8v&bu?h5f2B{Tt@193Ls zBepKeC!lVu_K4p5-gd@;PK}RRelFG?z8EcfMDGFQECTk3-g^-50((TS?P_UK2ka5O z?IDH%dqi&u$2t@N_K4mra!&+iwOua=I+&L@RUb0A1C`c({xC{)g+2)X{i-8h9yyCS zDpZm^y{bC0+V|mK29nB97ags3GThaco~Z@&y2at_=T`b{7Ik6NL%-F2${E zf^P508WCg;d!kIm5yh}GevT&4BZ~I6t6}ZGO=4X$J-oP@c-c_DR(q1Oi?*IX#?aLjH34q7d@qA(h@OBfWV8x>ox z`wWW-2b0nF82&UUyKxp&r!`n`0*&XAcm(23u=^Dx7GD~g-?)IpxHXCMU?)8XFpv{o zdmeAqsD9JUupthzR@hX#E{{K(q|FA1X4jEdu^^r^yz zJN^ULu|I56;XevAP9kvy#Kph{CQ(4?PXb!hhwW9L!}=*8FrG~9jWdmU6;Jwnq5XZ* zay~_EnS#}U29-2kLC*H1h5=I*YnCz@q3xXC)oOb$_!ldVu$~B{OLs4}%XGD2`8i!u zsM~~IFb8@gY}WyEppmbb)rh?y2ij3}%z?tcOyVo^{ftBhD!*Xvdz;Hco47ULRF{y! zmW4vw8>03Wov=D!+9PKvtCQD$e$?I_{*6IWndqYP+NW(0`$ANesErd+TdMi?!$F@IMSZn?hSgfWqHjUYthWrKC4CWY!qkzp| z&dj7lDjtnyFk_KoGnj?&-wIeC@Cuqk%%GTtH_st1^Fp6P_@FV@aD6o5I%neB+fI4A zll0NTDy^PG zd}+gLE*@=BpVW7s}V+c5LP0UBtZ! zcF`60v@1_Dsy-Z8^ODGF^=Z-pSVu+vV#ZH&v7b6>j&!J_n&9sT*pT50Vn>}IW}C=8 zeOai8r&SZ*Ewo?bX{u`?w;xsa1vZg872*_ND-Sk-OV-5QXaaW=**5^2z`Y3Z0;p76 zaGXx5Q^M6g&`U4}r?RVkS)uMish4T|2PyvocEpjBd*@y!f1*xO9Ubx7ozrAZkW|Jx zTRdVrC+h2)GVMJ%fb?yq?SvN7IEb19fN6|;#jHlYkAI9BkB9$Q(>QPi|DrywEO2dG zx@m-te~*CDGCSvE)Q+yj*1tSUJAR<(I^%o-J`*v)c7pQ)p?kTM+p zoj_7u)hoyi)u3!SH`L7wmv=+W%cKLfl2CCb77f)8w=y}F@g0x&$-s>7U5M9|&?>^9 z^|=E9f)S$EjPN#ct^j6)hi^c%2fJu5^gvgDxn-)nhge0h6@7KESOD%{&y3rVCl@#1uoV(k^r(TlcigIeDLo2jj~A=fvsnc9I_ zlOwfK6u?aF3<=OotqJ~qz-DUWAof*4Gqw2;^FUIW>7tgqRjBdYx0#ONYtirP7h7NO zf5=^*qK~Qh7HCjO70ZF~jyI~^6~@aKC0%OEj&cqQ;ty zxzR;!TR4b(=vg}~96S`Y90=c7kW?4vv@E4qK3$WX3s$(o$z$Qb`%w!A1$xk~fTUXQ zGGzN3glrGP*}}naXVDOT%Zw$d#$J)<+|%>J!U2a{Jo&}Qoq`5Ue3ncti>oBsXX8>FF< zT<_3_>GAZ-g59!AHLwqpmM;tT&XX|x`?_Ga7{k=$>q2h&_f5g4e*@(s?sYM8qe0BQ zg@)$)v-cK;97A^uvpL#*L1vibEh^X~FHG1zDx^WvKLd-;-X19AW^WG`Z1%R}u!G9z zeX6j!1nY1PZBKfEw?l6_3+-4?Xl!oBg2GU-2PHQKB}vb7*QVw++^ z^g;5l$L^eh-Mf7Ri@Y6#nbtW4yLWrWCTVgc2;0ri4WiHQo+f92@XpF}3pQU|Y11?* zf^ZM_+=4y&Jd2D8pqI48Hn1VLBP~0>P`CTbTz9up^k@%;Js^A!Wiuufph0YnPf;h$nzOP90^oNR~uTFkN|s}x-fSedz$(z@3S*vy@;Oo|HWD}l|KfFJx%@oMb45$ ziurD+#M9J|s8aH88rQ($F-ZF8Y3g15df^7OQ?;=YPgDO}mGm@q0~LCyQuSnSny&dZ zIN;znwBk2+8!Z;{H1%2D5M3x+8_WOaY3jF~QL^^U$=W&PY3eTC9u=OHD~yUZXV#Kq zS+O0xI1CF^^Rm8-RJVA9d=GLP*?|Jp9vs~$V1epHi0Qxr)oq!8NVSRr2vof#K!NIh z`0oW4sD6g{P6-97eH(etCP*reyQqAiYP#4n_u`^)Pya=xa^Py%)+L3uPfLwr%UuXs z2rRZlzG4!od~CT(brf5^g#UAEz)#-e`4OY_Qfn_rlSp-q2YFec?P0HYFSYFh1F&A& z0-^y}FLlZUL@FQ7_1wSp(vk2V2CSDBLM%{1z0|S7A_qt+jV>zo5)mN;z*xYHN8NHo zp>CPvs#^}G<^*8f68TC=r1HbsXH`etay9%{n#QMA=oXD&E#z*W9o2kkys}Wc%d4*O z8EQTeHAcQ-5~=)&*iv<*v9JZlCsY=!pm8c1t1tLz?}{ZHL>+}$7T@3XY`q@!#E`9c zQ(4(%#Mh&S+a_xJ(7CN??M!#w8i5AaJ+n}6uKQyya*BI2(Uf7f-{<6l?Trb3{1o@& zLnlehxI)^5%v2#Yh#6PtW@2oGaa^IV7XQMM+_=JaW01Myu)k=8azJ5KrG|~c^`{dG ztK886Ic!^1Ss$0W?`u(NpAZZNS>yVIAP}Th3hj*TlX@yv3Z3_-&NeO6zJ>CGv}xNZ zeHxOqUtvH<^zOxG)WU%Gtz`2)N!nBx(1HrvPT7K2b`%D5hgR)=g%5R|k zC4ZjwbcT4^qhJfon_yxafXz)}k3xT)py^~B4F-xm3SsX8ktOX}D4P>}f%2z;UEb^U zO_Q~NZL)sfwQ`Nhc5r;X5M!70Y4FSf4Jxtg`esr$0=uqXf>;6=%Kzj-bYZh;a9Cc5eW9)+ zs%^5^vC0G!gvtLdS*1vE0QO5e6za}bCHbr>75W16S&_4tG*h9DrV0A&k9m+W@b4o< zm5Ht-y7I|zSJ(B-BUb12Zq&hp@QC3EW>H>X_d@!3;uJ2#*8*2qSDS|19lcO-S3x!0 z#hF~MQ7+}l(D{V*^yf5;a>W%+-OuTI<`nE5LO-YdPN9*(o&1{GkT>bsy9G5LPtBby zJ~13!d)V|#=biaxJdcm3YfIEzj`L(4uU(aoryJqNl73t`-NELj=kc_^^n5_ZtDyf` zt0L*i)JDLww@i~0K>uRMT|>nn3xGPY9YaQT8K)6JB58yVMv zeV5VdLup(8mhC8gEw%CS`UBFW9#q#j$(o<2^_zmM%gWP}X$kw0cD5U(r{vg%WNb<0 z1<%hW6`wwcZhoq$McQ4g(<^&ApYKI#7OvCYa~LC%^tLoryW5;-^^+UIe{}3B@5GM1 zEw%CX7#h9@2pxM{+Cv@tcQS4Up<{1L`%Bp1fjA7%|4uHU^!9KfXOS@-3^;u3#3a2t zWPU=%d*ZZSx<8zPK3nnHK47tQD{oku%#LBvK_m6kQ2= zPlsIz_rrf5V0W7fj#t7|*!#5nksWGYP{^n#DZM{kr_I|)S_8IaNO=b|u1})H)=VaV zt&Btg{*IpiXcRJ15ot zUZA_YUs*wXLlVzWMU8PUoNv*nmzk=+huppj=k)wEO~+tugP5WzWwYBs*HccS=P3Rk zcGa3B{uXRzn700>SBAun!#-ogm|mUQY!stjq|0q~@H2~#3;l>&vtK&zD%6Zw*4|h) zGp|2#%uX7v%ucIM!h_T6`PbF>e?ss#-?CjnzxK3DzjWTI@5Rev0(Y?SH~*&7J_aFd zPDlqTZrnSFM^C`!Cj7uu@9jz^4QA#B!bgrKh67ki#!Dc)V}4?4ujOh#gxMD8rI&-Y znkmifph&*e<#a?^d-S`UG`$q(NO&dzdnwL^5Ep<3vDuq(9wzl5z|8LA6h}eauA3== z%|8jfSwbI&?PF?us9I*5J!S?r_LMo5T@6R2YrLmQvdxu-@+C14Y;$r}sa_ZDv1!{K zmcc07>;+Q~V73|gib*pS)ajz_uR5~LiSQpN;Y}B~VA*C+HQ#gij)GK8OY0s|HL03Q zmA^(+k&o{vc#U`*QgwssNY&HuKPgp}&z&t^2C~;`7tj0&YhOwo`E9O`>QuCw8$90hU-glZmHL;>!-C6oKEg+Bt!QhKixW9=jn^o4I`4RnLMpe!UmIDr(5ZA z9%PsCpmcp5_h9?t=8$mtCO!X8?xJt#%K7ea7!cSmowv^i(c$zBa#MFWebX%^EFH1S z+L+xnUa^^CR2)Q9)3Obi+c80C3v8_152B9}ngbsVF&Qw*daeT^JNYqPi*6qvr#8Y5 z$J8mck$pI(b<@tx$J99neH?AIRl1Q* z+}_k034%Xvm2ROE_yidbDAP`4t8|FkIcPgZVxT|qgmHWreB40BwP2tGKj`Y1zpM;P z>vZMb*O2`Y{;oiCvs{)u zSJMT#L{Rmr=dig08R@rm-$Ye^q5Af~d~;+gCXvcJ%zs9;r@=oD zz>T8%a<2H~SllUk&!#WEcuQ*Y8>>I*+hMulE7-@`0O4)>1k5;d18)zL5sfoDd3&^m zxZ}+UylYdG{jb%S<6Vo~``ZqsWw!e%IbaKXYP!VcJoU4rhWFEj|FGNxKH*VqQ?b9GRXoDvpyM@pxzP?O zIW1`X&3h-E*XN6<_(q%gjzrqFV1j+=@J5^Xen9$d<-N;Ao8CA?$KNpG3)NwBbb1dpe1w5KELegTw|qvmqKZs7m97 zfc?ou8S>T4l~1~ za))zeQ@+>T+~Zi94`36+zRG%SxcYzb>T^Fw;XFznL)n9%_YEXg-IW0*=zR}~{UG)P z4XV=k7&*6-x&>IT)wyQgTOyGo((-?F5bCwh;Q2%~Rbsui>Ieh_>$R~E`vC8?wKGAB zC1|&_yxZsAYnQ`y39w#^d_{(pq1Uz%pL%U6Jg-P%)0E|U?Z3HRI}GO7YwxevYg^<7 zNgB~5)kD4N-E{ctp{f=?xHrLnJKLaPyM;OiN!_K{-uVbicrC_g%sZ)`?_v}-zV#Mp zWVofbKr@dzE|@T4L@Xn#rdeKiF1jnfcp@9G?d)o~%3ekLP-@%5nC0Z430(8(iRM_A zd6;b#+K6Mh`zx;R`^w^2_cyNFKj^TZLAbt8+)UTARaS_O?P9I2+SZ3f*1$9 z{*bKxK(f-gwcBL%m0|T4!G2e)zw+*BQUkpHZdv{LWTofT&d%y9!|ERj`vhS6ABMQE zx&GL!{4LoTPn zJYZ2ZGM2L{Sh@Y=9eS#c?EEqKACaQU>n=G)RctD$e(&de%}y-&QwO7}Ehd?j+KcAv zyy8iroM{RstxebUUZC6Z7l%T!D@S|w*K$0PmrY!f!|sMPJ(}56XzFq50e;Mezl)*d zXp3Rr(&mrBek!PScJ^|t4D)g2jmYeMA%6}S%}NH?>1q-K>)1d4HQl{{#5Ls31C4i) zXuU_8tOO3X5mF}2LhSgmb?&wl4*_9xCNc7l~J(9p$uyxjgHmh(v`-c`BNbz`JEr=||WH>BpK@qvu zg8A@V4w9xJ%eUZN^vs0&e6>I?ad{rD$3Ww^BzD}3;0&w<6S5X8R0|FWEjW$hlYzA$ zvhW@uZ^5kCf`{RG5F||_mv6!E=&5hb%`~jOvG6^&{@{8aG_FG8ki8jy0BgZnSqp|! zA)OFfa2>^00c$~IVT=lk`k)1Jtq8Bg(2@)+rhqAltysn3FdlLEBxoBokK2a{ zSIx#7AH%7&X-Lh+Rdw?IdLX1`lXha~R^Lk)*w}Mgk=1!ku@+}UF`XNl*}DYxqgt#@ zo%*!+fHRfr?XeHjRj%J8(^al-vdS$tfxmNmv7_sB=~_&ml{*GqUqmq-ZPu{Av9A`` z$F`s~En9b-r$%XEUB}k4b+|h>_Vxm~n+7SHdtq_YAVuSkVvqL9M(GeP^RX9m;KdC) zyh=_{&lyNoal_5c=*BKslX-ThAZxl8w&-LxnD>{g7VECAY-D|e-H+{wz!vR;EG@7~ zR*Uw{s#|mn>_fS@lETA9GpwSXmmZ{16*-+XtQs^PVI&$GVH>u)5|0$yDUl4hn?5S6 zRcv2W{MSl6-^37!_G!u;lx5) z4Sk2LEVh$EA{qNDbIiie?PS75J-l_q;bTc}BxU2Qxj*+)Ym>1P<%zyo-xx16Mw<1_ zmZ1x8V0u>gICP<0k4gEsdno)I>ngmtj>HsSjD>I7I5HV~JQh_Nn%*z{-%vR23K~=z z8om-X_83lcY4h|pm1^fuDBXN@Wh7(AGVd#ONiS6CCRu5h)s>M~@NA5Yx; zgx}LD%-;CC9f7UFtiE5GtO9Hm<}!%C0$YIDZ7kyqU<)vdAns5?3osjxOOuYk7GTCq za|KCHRIvc_2ko&TMrnMS{05sj_Q+ODX2Pc6_M!MRW*ZOR7{JShT$Y9yO|Rw>K~;z8 zQI$q)EWk|qkE^X!f;Dn_yU z0a%0{<>Jz$9{VGV*@>(>fO{0cPGn@^)d#TXMBXC9QjZRSXAoeNazbd1dX#raD=^N1 zyZ_I$Kx4&8a2*J2toSCxYrtACJ!`>YwZO-U9VW0w2do8=g$V%v)Pl{BYc1Fjp6vmn zl;vBX;M)`K#cF}ZipRh;3D{Wi1BiElwcx6(1!JfX$BOG5m?mogYe8h;HUHj%+hYqx z!m}%2j=Fpc6yTS@z4b4&Kx4(3a2*3|toQ}QC%{_pWYz-iT_tg>xWPeb(ivC_B1KS>kT+i~x+-muo>&cTd__af+797JAOyV6j|5*ZhVQ zTQ5VxvB1{LdLP0rA7JZcZ$P{VY^iL(p)7|3Tl9G=YxhF6o29ZZ)hNyFkA`OoXi$mG zk>``T1lSz;TZk`#FZz6*30fvWER}7qcIp0H_rn;t0_%my$5I(#M!m45_{_1wGZrLG zhiga|70&(_CDd4CnB)h}I-=>d#s5 zoD3RNV*Pn5sRh9L^S=OpEtW9`-{#AVH&m-ZP z1h8ut7W(r@PpLoeggN%-qn@w+eBJWt&-_A~`tx09%KEd-gIRxS58$$stZ$Ppo}12_ z^#|?I#^+mT%LTwTK0kdVw}gOge13T{>oveOKL2tQ*A?(R&!cS5bB~jQSnk0%#o)+( z+Vec~zo^ij=bEX!HV1?~&$nfjB1IR4O6+;QTa~ouxjPj$wn`eg{FqgW6l1(li9OGs ztCIFS??Q#)s#NXf6|~uD6^_+sUz$1S!{xT=d7AU6Yb(Y>*Z!|hNZptdwv#d1cIOvz z*$0REE}V_d-{cCLwf4fmHRT&VE3|$}Jc@a5ChB&IX43wtp!X3ZwC?jSC8m?OfW+xw z)afJ+a0#&=zNP_0sLxu9`% z5^EgCNC5QPl|*6gUcEGQ?(UTd7W8SlRm;{}rBs$J9s}=G5O${z%@`xKLDV<6W%*-O z((d&6RG0^BW9GXMZvfkOJu(vzDTes=(UAy$+xP#T1Od?c$BsjMGI zwJi6LcJ=Mu~qEd-4xkf_Yyejey| ztJ&Z_wxz$9S0;=&m32wamgTJ^NL_Lf_09*@C9gre2&_xC$^=9z-zD88KwYx_Oa|w` zx@0WG9!jW7o`QH3B$eG=)N)<2x@W3O#v?7)CHu&$SP#=`+RPK7f3Dda_vSh6 z3!$IVd3u$3?|UffeImnS(EBkG6Ha0t02-H&_~2whJ7|2HMCVgr1HH7?^0JF#WX?iP z`b~?v^~*>&i=va@nF)I9CE3?QT&u*@B%X(O7Br|%qu!YPJ*jU2rm2;I*Ig=mBAkNJ ze(85D+D?`Rb>nKY*e3z38~a1_Q$pQ%JjBr;Y%cyd6Bns9qqrYi)O}Y*oQ4qhQQ=-- z6VS+6Od`by*?tKB(y$_n-;)M!VVDI0JcK9 zsA$WR5mepKGiA#gw~#G2j}4l(@0LqNJ|yNs{8fpANjwYjq!P!F zSno`Z5;V>d+gaS41IO%4qG-=v&bcLMVAH{R*w^HiYi+j@8g6|xNzVBz+XjI>d-){9 z!xAsJ62`Ai0ZN zY12KsV&~L&`(KqEicxkb5>3w9%iuOyTRr+B_1=hM0T-#lNB_`a9RZ+~m(7(KiFb1uKT=j&x~ZLyYcgnUfS^Yv+}Zq50X zy*z)+mDx-*7~gON=%>!qFP*0ks+sZ4B5yj_UdCre_bI6lff?PvIlOlmn9m(~M)x7a`=CK=Zgiu}=vF?D;0Da-x@F=bl{dPx zBw9u{82+t+8QsAU6C^-mfPtBSNac<0XbF(fT?_w}z>Mw#h&Ppx(QSJ^BN)Kv3|-W6 zM%T_WWpoRXmNPm=m%-?|I*%LO6z_Z)-8-R5-st9dv5YR|tVD?z9Xo2w=q`2^GrG4t zA*1V>@h8R~k zb#H@2^Kcj9;Xv?k5RZcfu`Oq8-;nzSFk`zR6BntxvHjc{Y3AWB!oz{!;UKmHW^9Wy z0g=iZ+lLZh9uEFfK=5!74=G_D?qWO~NGeNR)N;mlo@dI~*5OE_Y2e{9W4q3I+}Qr( zoi1bBK2*sY+p5kjV>>J-F=uRRIg1(FUY?M#otN<^)uTLL#&%OK|4Yx8u|1Z{FWnc; zoQ&jdgFJt>5m*3#|GPael8uxsa9Xx+IW3x|-J`of&8{6O8(f#_g=qx&TIvA)h zyqfbd)2Aq1)?(#gUuKqH!u26&P}vH$dFUmWD=^!9^HRNBiOG!Kd9ct$G8d6Z;_joX zqFPq@#ylRE17?+NFXNGJ&>*(utgY3{M9V6Vfd6n{R(TP``4S)( z_-!U2QhBR9P6A|=FTwwRz^t;($v@ zyTSc`{XFl?IaR05sc`Dts_J`hkI)Oq^eOgAmVKWM;(*3yJrW1O|I{!5zmWAZUA#hl zp2IJvurAyiY$_*R;0v+c-xQC!JeNOMg|yULj?5##{I&A}PQ*Zi#MblI%Sk^Pn7?j# zEnnjS^VgXxU2Pd;X~$oWtVW^yb@+AM?+?shr$ZbH8YH%kzg|r0d|>{1d8{r_#s0db zRLftVL;e|H{`wunS}BmfE{PQcs@Pu#N`d@!lj}KJ2IjAaK};2+DEbn_vmhGrq*t|$ zznk6MOf4!?nW0AkE3geE3mT_LY{Pm4k zK5Cij)8(&U7p1@L)8((FjC}Cd?|i!awMS8U`={K9%3qs{(tG=K`Rh)F^bxH-eI0+@ zS?*flE%5Y)r@A}UT$ghRbK5>QB%)qmd%5k-HT(&p+;g>lp(}Hx!+Ik!mI7nIhiQ=Gik2Zz!wa7Wn#Z<`R$$2pqaGEjU3bhn@MvZP5=!OTW= z&7?h;GWxLNl6Gd&(mE7sCY^H=&v*cvNsmH20vaT?&P@7@)Q^D8B)xLNsS6b1E`=S} zIZ~~e)Z=FE*atR~#z2e$Hj^%k6$GkyCLJXOnn`n!KLyxKS_W~S7|o=ha}exkkX76LY~?R0a4m`{r>M{;O)H_vrr_`Llt&1@AV9TYx>b z7>cF-pdh>j?-fK}0vv_va`=w7Lr@w?AKjQKKS_1gB>n}dAAn8b5w}5r28pdViT_Ia zbYPSCqa`fMK%|Fu%zn*i@lBgle{hEo}I1OyyZ2<9;oAxL8 z-ahqgH{Lg2%$)5`M*h{>W|C65?1Oczb4${P%s2`zeL1T6cai=jvtO3$rprSln8gj_Oj|G`_f63r*+1~qRi3Cya?&a`JF_kN=k04R5eRZVbPL2BgYd89X24) zM(sq`cWlgk1(TnJzK$cR_CZIK-?1Z1Q{^1ea`}lJV45r2$f(HcC#E{Km{?tud_Re{ z@(q5LHqre%<#XHdKmQ8D-l=`1X={J*fk#E1%GxiKw)V5cbZCDEOhx;thfj$*m77>y zUQa7_s>nZyo%$$w1qa+!6&vh|wsxZXcN&npK2|-@sm|-Z)J_|fs&2Xb^XTlfafMo4 zk=Jdsod#J>owKuvl|l7tdZ((YZi!Uih0Su%rUMGqT;y9niAz$=#a8+H{AnnyxwxBJ(my{P4Kg;Bf3F-)PFwy4bkQ{#Pk@-bR>bv2Q_7%?stbYrGTX zY2~e|szqN#qWn1Aqvpk`-f(q^@~u?Am)sa7%8ypLmpcq4uYaPvvrNBI{wKI0iSkL< zsaajN1zc02Tti>;YKNaF-j*mY)8M{ltsIjm|5DuRW_?1UJjGP4dBeCp66Nig*EMe% zH#t%MhT8L%&5vn`@-NgQZ(H6>bgH-CF&{ZDQGRAM+?pzdwK<9MD^%+bEbnYuq`VJ1 z&8KGb66K4O_i@J=NM6QudO~fdQuRZ7z4EBG+H6Jb^`4#D8Z(t^uUA#o)>=CZ1KhVdVjs8IsqFqH4Pt)0EdU zHnrW2Y0HnmX>04P24jepnr0bQEuFIn_ZJ4Hwns`moBUX|dX?)owscOuTG@uBt0AgX zqRJ>Gkv)xsI6DfIjN7=0Y4?dKLo|1gh^;wjBS#@5K`klfxr%L4qT@+Ai z)((LF(CFGJ_(5_=qGlqx(z(6(TdAfT0%6sRYFin=oi4GXGb$9sy&AZmK>R=){xhJMP_nTqWl;ubCSxmA*A42DC6~y#J!TdXGA?% z`)D3!+eEcotG1^sk4{uCH7$=x%b5(Qg03(7K4Qr+iRyPv;-8XGS1b5BJJ$O$9o1f~ z!QalS-ct*&v7YHGquVE{<%YGdN^G33&g)F<@kU1)r}fN^<9J0xk(tR)5S88@uxM&wqr< znr+KRqisn3Y+V~h8`G4(xiicdW7_iL8Je2y-1Q~Dn=bcbEoVahYgK1^Q@uz2VqNIQ z88bQGoi^8uH)dM?UD?^en3?%Wx+3jp%yIdHbUB=0+UDdZGNv^yOsbidDxskj6KeicI-8YY{&U$m zv`q0b%HODwJIo5?@-xItuTq?>$oH1w8OGG*kI~ZLaO=eS{FTa?S*>8%KmVGBaGOzK-ku%fQ!xYDJn*RkrR<9)qe zSItlG_4-9>Pwc3$%d+)pb@WN8b19P?sxqh4y#k%iy~*E7x&F5hg*jLymTXO(cx->V?ycsmRZ#Y|ZH%R`QRH#7}b5Gg3dnRaDfRReG>A z&B9{M*`1C;eU!gJ<91Hn4KS?A8#Qo$PL1SWIw!N~oF-g4r-4Z4)a-OlO47LnbWqxM zC28B~)HL?PWGB1MRy4KCl>UsEU9a0^{lfeU47SVpWlc4G)UMPPFZFrJwrl5CGSit2 z?eZozgbOFFYu7$?8xpn|ti)3{jA|~y6WevD%E)i0(uU4mo#p-|>C(MOG|MF!Z+QyW z#gc3<#o)U9F8D@CuANr-^-=OnytAY{H9(49>O~kj+$k!_PE9{cVz-|+V&^);HnSzk zZc(>$2g0A>_*B=Z+oZnme|CJLOVsTVu9eyIJl{F$wxkdIJkL|pivHP#(snqMRWZB2 z-|9q!vFrhEF_V9EILwrCSKk*lhPfzvB$c7QhsylLDOJrpq%WFmu|)lUV6JxEt4@wn zGnHy|o$Bc0G23;Tqx;g4U5|3~-9(qJCm5YP8vE57RcZaz?iln`RPS7IiE5dkgQ|Ba zKZJ}ZueS(RPs}SL$9V8hdoyo8sdCl3re=^-a}!t94Jx~616VVP9^atK(HRDA!w#;G z>oV!mpAoj6$Ygv^JcO1^w*BQ8WcK9A&*W0CO6NS1y4AX}^{I4eBlWkksW8wt)AUrk z@*1RZ|GlxB%BQLnM7JV*clYkuzcgJsJCrRgE?b(b(Cn+rKgg(+R@-pU>E97jOKVa) zNYOq_i28D?M9mFI^(b|8*Lvu7u5uN*PNgp+-2Tu5kB@TIw#H}HGOD>68&&4o2>d2j zo6;#l#mZdo(tVk$)|gx$-w}C8YWJ;zgj_Y|<>2WN$@;fnCdMqcm%|r6tnb19Nu6!A$DZe!X)bp0g1Tn5Hzd&NQRt|(2 zlmA+FZmZP7c0#_MY1Q+NN-Y)l$iK%(^}N$^Cg+cm*gchpQD$2HGOoxy@2k8TW~Liu znXGD~my7;r)yTN2o#qLuNm2HC(goH=-50(h6jsguXW?S$H-fa9_CKY)+AR52C$;B) z3Kptklvy##YZwwVs1yFDhCdWJ63L`OO3w#UH{%7}SF5*|cV0nyX=>HUL_t33+zs&c zCB3qxKR|TTJJEZ!?{YL*C21}tQ!C)h9G_x{dzAFbq^p=nJ)c9odJu!wtD=J@L6po9 zmU~rZrKjdEte1LquGFHs<^dd_S1+5DHOKac?(J#9O|L$Vj=0YC>g(vq1esp_9K9!( z@Ln4^`e&6L;^-3xKsP!%Uk}~n=wq0oy;>Yy))Ttb(LJPRb4TwZJ#CIYkxOZ>tsMOV z6R6inNB2@4wsrL1ls?+g4@u8Q z+wP8jSM}M$(Z@3vdQEopE|NLL(NopN*+y5?_fD7I%nHfL9du;O z%9C;LowIqWi_XSyrKuCNYV9vNU#)Y9iaq+YFTH|6HAQ{OeC!!SmHTwCvK9HGvD>HI zDazkQBl}bsQ=h+x9_mwRO#gg;n$V}pm?7%-oiW?z|0<@lG2`;@FzS7}7&AUUP};g0vqQd8 zIUCq@Wdh$1B#**IM!J)u8L>VarXE-0PgiZaTjP`Uj7Flq`dMUbZmxl-vOk(iOpHY& z^s3-BzolhdYkS*U{mw~P2S>eYsTQ|foAq2&yBR~py~(MMDU*@7Ekg(E8r_VtlBmxE zlDIV2sk_orlcy(1MocI2yA_GuNJl2F&vn|?#O564#TFoTauDkk^;uGn*j>3!(@kv6 z;a=R-)4vonJ9A+OrKrp=|o9sLOG?WIq##3PrtjUYocFihtgD=b}fARFQw%J zR#bhApgYbOFb03@+u6Q+_*JRaHv=>6DZeaX%QXGet|j}tP1EE(?eZGd%^Pq&qtw4^ zWgE68#98~mZ4?cB8cWGbUAe>7$&C7MkFV8tsX8SjM;m|0;BVB^DlqUR=zcpUOzpxT z;%oChF57RU%UiKdo)`FQ4+M@&Sz#TY7dPc1I<8-ftJ3f5<_)+2x9U+{XUB!?ro6UJ z_;Ht0QdH06AXu$16=YCI{+1Ep=eaT~gHi`z!Q@yIIMpK)w zf%4Y_cJcZOI)Q#hGf?nZAeA~ zPUKJD3aiVW%9qV(z|N{bjWI{Xr9?3&+xRe z4bWFE-8Zn*oeHTfsHm^EF*-Qdi3aH4wzHe)bCs&rxTEC(o0js7L@Ij$rnE$?YJ-Rd zG$^&CotRsds_bavVUS%b&E$XyT>JXHX7r1aP)yq>8l-pn4%(q=fPNZs(0J?He=FPi zZ~ zqk+}Tw&dTOTTKti&QyQBS*2@P)#-7vRchmF@Wfsxx?%e72DIt}v$!}Gb4}a$8?IKp zPB6KRzteD5yPkNGWkUZAtf~K6r;O`nO$7$=G&*FHVV$0&AJg@|LtGFW{CrQYAt&S# zvZEi4)`xov?8BR^$sMA%DIqdMm)6DHk8v#+Vi(gBa&0Qt|1KV}07LutK=LHFYPpJp zzkyBdCpk{aZ6L`vNq9wx_FLp9<$5Y{@ZH>x2ZkNkpBv_V9g9|V&7w&2*529!wD>p5xQr3HXEAD?>@(%Q)r_() z)qJc^*T@g^>Bo>ek)Ifens4&C^C&eTE;WLOJcdL~U;0c%p=h(WxCkT;bdI&EBbDUS z%F05Y#1&uT&(5(9%=MFFeN8()0?x4x%#Dy|yl^isF#*n94t9>U3tyP;2!@pr`M&j< zc{uWD^v=lTk4AGtce4J9%sHT8W0;OhdA%Y`i^N)+NjdNlel{7jDu8B|@xBe1VejK- z*-oyuiD->9D z#wSYmP|s*A20YGvsbH7_Opq&y)~G)8|47M6|5eCb2BOAiiu7v+(H&8`Q)umWKHtb8*mstJ; zG#m=k_5^p^fngfQhvGu>RA^zQY(ifOX)GT==00F!`5weOVl;UAf@uUHvb6;46RNx-Ub9mF+aRD~BI zUH~mBV^#P8?mxh)(DO-NoCM6BK8o8|e>?_or>$f_?sPgbbAY+izhb!w$i?pTF!>Jv zbEhDaiVBoQzzz4N(yQVA9{KM;)bvZyaC>+9ueXzo=BPfn(_Jbjcj~@^7X|=xryz$r zsXn-q_8+GIFl45IsA*J@{>HD0nAo>M^W`@$qM+D!8ZYuC;vwRflU#dn)g`{7+LHuz z!zU8^qIg0Cs@fMy^vu;ACbv5XvFoYfwV+`Z%u^66Kx36JoV&|uouwM_HXDCE!l`Xe z3}4e6u|AG{+EcNi`dr;=8TtmXuh9F24E+w%aV6mnG;aF84NdOmbjF6dYf{990@XRR zXjrc9A~t9ZLlJ9|UaUbHzHT} zcNKaYv3V3Y4>WuRb2r4Dpm8%_c>UTnu2;K%zRUW;dow@s%FAh`ov4 z*JUX6UKITf@tX`C;ESwhXw`^y4K<`j zJ;EOJXkJ_-IL!nnqF^17w|qA*`+?_CV;gSfM$H-DCE9=7;1ramHo3=DD{AiQv#6t&|p5}9p$NM*A(d3#Qs`YoD``b94NBBeTiN1R; zeTwJN*3WHx(C5y7Vm+<6kQRRX_&($6?BcKg~`1py@y_r9-8r z8AVLg{JCHMy}>wr=qkcX%tP-r?dpZKON_R941vTxxkO4U$E|H!vyWSSMk7Dba<#@S zS5pd$F25$%RjbpjZM##G+eoX@QG3&ui8{9$-Ntq@b-B*UiAD})b|%W4n#8HGnzG#R zf||12HYPl{MZ&*lZSNH#Wq;t>?mA^I{^p91K6MFBW|bOJd6T2DN=BTeWf%YI_c1$(LxAF#NE7iRfxys6fSq zKFW66Y%qmRMywwN`heE6VJ1S11*7{7C=@G+RRsklgWESWA+a3M#{m{E#{L_z#Xxb+ zVV}fj*$vN=#cL7!7bQLgo8JP{a6f;_UuMw-T9+#YVpHJuho8nehj6l%_%hr1d+E_) zViH2T16xc4Iey*`IV~pMlbjYSHzBh~3LBUBZM@$bl+0f=8)vXB?@!)NGFl)zYqQly zvGg=Mt10_juoL9?6*_NcwB%%G_$w?DLDbw-WM@CJ6-Q=ce_2twPjlAGx~dbYcT|58 z*1yeGeiN+ELgS&pS{dX@qM694mCJ+m*N}O^toQNC)XI0fbpm+fr|VhQj@a5h$`@dT zD(nBrmdzaM+upny%YxSbL5>~9$VFOkltvZXb{(K(2$bC5d&G;9X*IK(4j zM#KCL@e9~;*CGx4yo5BIk!as=Fv(lKP6a^2Q833t94+Qln7biv7jquWe;~dFEh^ml zcTz^Yk%$I?F^gbQ^Y5B%JMh27^;{z>$0RCj%XANdcK};#egpA^7%eupd6VCv1uc@d z73XPiCj(n?z5?+qur1RgvGV#;P|lX=s0KPgTc#0jF^hq1nO4Sf6OfCyOlOim2bf<5 znN(Du=yN`rp9e~>X2^@kzW}19K1F`%=fK-t!~CD4`mkksQ{@!pex}TKz-C~OD~Xn= zKAQhQ|LC`QY7j(?bw&EUM@P+9dkb1;|411!)YW)oVp!C;)aQo1w=LJ)-kaF|I#GG8 zmq^BxYa_LNCR=~DT<9~zW>bTcLF;!g3n8urb~OnK(tl7;+RI%{-bM6nfJHfKD9|pZ zI(m~>Ed5V#+SEHdCk)JK`$O~B8 zA3S-f%E^-#Q|4M=o*d*jU_(y&&ky>0yiaHYQS&}U`fnuLdvjx3w}Rc^;Z28o%kuEX zvpw@ihqkp*7!D5Hyr65R8=Bn|WVJRrj9UB&*xKkqi1UGYb0}8w2L)km^em!J103M* zs0sy2qgCpcRoM+@%gSQ1zDDZbl59NAPcnTergrIy<%UnsX6loSqEjiJ$+@Gzx)1o} zbYR05WJ>HwPD%TPvvu!RGN<92fcy?1YW%UNdt-AWujzq-*WD64p{tNv_P?GTSXi&W zp508#=uutjkbN_2E9_BqSz~O0JxcdklGDw^ZbcTRpE3Gv446%fu_gMO*+wyL-|%L3 zbIZ}Mek9(?+T9P)$jf`eJ?1N=lM`2|$FiGPrA*CZ*)6Q3)#C|YDO0mNsM)w4H4l0< zWt#;x4`z$@A`fQ$UZhFF*E`{GsM6+Fw23SB*gotm#9D`u@)6uSptTKV`;WO!f-&P^QY?YT>}AA~*{ugdJW19A zp!F!2sh{90p!HOk{XXSg_@MPXm~SCI17rRUqaT19KBqr{xI6W*PoPQzziYPa+!m^P z9%6@n#_C#jfT-#29X>PA}eB9nZmHGN6CS^NswmBBGSGx}F*MP!a?P<7` z!1ik2LVO9_a9!$kCZoyJG%+<>d7t#CMdQBUC=pnTf?P?o%D3oT$*D!JBlA3nnm;XS z(RF02_9xMz&DU!YY0+?fTQb)dNW~N}!#;^avSoucRaBGhzGT3FIZh~(j?07{tNOWz z%BWT|k)Hvgrt6Dp#iGj3NPXcy8e!G(WTbBN>9)!E&NH8F$QC~qvaP_6r)1a)l+0hN z|2x~)iB-N2wZ-_Gmu8dDw3ScS=A!Ws&uDXjO)X_6+J<5$brJocqs-I1-DFHzXYeO+ zbGGz1blXwprL^l}wQYC>y%P$hV=C`UsnEDBDby3Or4)DoGz^CM0AdYjZG~y~6)&9v zyv3dXd0*@iLr%l)t=WnbN1@_RWVIo*DQGwr<`an3phaTaolZ*YeEzKXH?QFZtyjU! zU(2!swB8JJ_}3h^fY$q9`h3GPOrUi+%)<~5hcT`YsWDOG4`xFb~4q z4_beMSp)GduzpL`Q+qziC{Vr!_#QvI!SFWUZ<+t_RXT`TIa1(DX-{VDbm{dI;5^qS>@P5bS2!Az!svRBwxFd z9~PotlKna0V{vX5ub)sJTT&*Ko}2ACVJmDY&Q*QS^R&R?+?Ei-fyKE{tmF?0LY!NI z=&gVj=~U?a*kZ-$SUD%#<0@HEbXkqm%b*ZleueuPv`E%MOphNp(+6nNEWbY1)+TL# z$!=J&HQF?@$0D^Yu$dj?QgMlt8p%g9`xn(fGkY%bbELhocOTg(+zdhVbQbUP7TJW$ z;`!Om=LL(mQ1S*~Q7y=^H$zTV_LrQjl>Nw?UqIBHE3$Gt*@_saV7;{{-KRP0YvcB= zmG#TBWqJ{cwRaaZjs#{s$Z`I4hO_=&uwMNW)Dsd^KoHdkiLjtRB70SniGHk}j&$ ZD=3$i}lH~$Ud!Fxpp4s!#ev* z>YunITlsd-{0mZF18ZlHD~TqY>DswMa_Z$Hf9Bc@qQ;HZZH;1b)bx;#MY>U}X}M=C zLci%5-CovVR2;^efAHxSl0Mv}TgMP>OH-roaXl6_kM={9uIFbeeQ|~CeSErw>@z*{ zKSDO+Pbd6?b<{Jy6L<$SjZ55-Eq`Y$jeC%+w`th(pkXD

    ^rQJ_U)t*c4N{L1k! zX#D_YG{oj&{tfdm#67@v@o&Ti0wvq}BnD<1cGw1EiZmPk#tsZvkQocn25k0+VkJ?a zT=7D{c@WY20Zmdo`ysYiaTZoK&Te>Xu<}o&-UThnF;gS{%SjNhcos_HL*$2ewwUaN zfRA1E>wCFjNJN3^%e>G#MsIN zwPMR`+3cWsFQg^{i#kCr6%{C_TAGhg8F}gr$X_SzP3hjQ`h|t)MX{+s`MO1k=4|EH zQlS9-G{si}3(#Lfd$uaD~;x;an0HKE~Bxct?7

    fzA;!0Gp8-3>n3+gM2LL<7SQfWA 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